JMS Topic - Deliver to only one Durable Subscriber
Hi,
Is it possible to put a message onto a topic but only have it delivered to a single durable subscriber?
I realise this breaks the rules of what a topic is but this is for a scenario where a single subscriber has errored when processing the original message from the topic. I am putting a user interaction process to recover it and if the user selects ‘resubmit’ I want to put the message back on the topic but only deliver it to the one subscriber that failed to process the message.
My ways to achieve this (in order of preference) would be.
1. JMS Adapter
2. Writing Java to use JMS API
If neither of these are possible than:
3. Create a System Resubmit queue and have every composite look for message on the resubmit queue (with their client ID) as well as the normal topic they use
Of course I would like to avoid 3 as it introduces a complication into every process we create that takes messages from a JMS Topic.
Thanks for your help.
Robert
I could suggest a (dirty) trick:
all subscribers subscribe to the topic using a filter (message selector, http://docs.oracle.com/javaee/6/tutorial/doc/bnceh.html#bncer)
SUBSCRIBER1 uses:
destination = ALL OR SUBSCRIBER1
SUBSCRIBER2 uses:
destination = ALL OR SUBSCRIBER2
etc
The first message has the property destination set to ALL, so all subscribers will process it.
The resubmitted message will have destination = SUBSCRIBER<N>, where N is the failed subscriber
Similar Messages
-
JMS Queue working with only one AIA instance.
Hi,
We are having a Web-Logic JMS Queue configured for an instance. I have developed a consumer in AIA instance to pull the messages from the Queue.
And this works fine.
Now I have an another instance consumer which is pointing to the same Queue, but it fails to get the messages from it.
I have switched off the consumer in the FIRST instance, but even then consumer from the SECOND instance was not able to pull the messages.
Later, I tried switching on the consumer of the FIRST instance, and all the messages were pulled in this instance.
So how can I make it work with two AIA instances and one JMS Queue, provided only one AIA instance consumer is active at a time.
Thanks in Advance.
Regards!* Likely your best bet is to check your server logs for "Error" and "Warning" messages, and/or, since these questions are specific to AIA's usage of JMS, post your questions to the AIA newsgroup.
* WL JMS does not impose a limit on the number of consumers on a queue, but it does only allow one named connection with the same "client id" to connect at a time. Its unusual to name connections in queueing applications, but possible - and AIA may be doing this. (If this is the problem there should be "client id in use" style log messages or exceptions.)
* Another possibility is a misconfiguration of your remote consumer. Make sure the URL is correct, and remember, if an application is running in the same cluster as the remote destination, don't specify a URL.
* Also, if the remote consumer is running in a different domain, make sure the domains are named differently, and that no two JMS servers in the two domains have the same name (as per the unique naming restrictions documented in the Best Practices section of the JMS configuration guide -- http://download.oracle.com/docs/cd/E14571_01/web.1111/e13738/best_practice.htm#CACJCGHG ).
Regards,
Tom -
When you have several topics assigned to a see also button,
the see also button displays several topics within the pop-up
window in the compiled help. However, if you have only one see also
topic assigned to the button, the button automatically displays the
topic window for that topic. The first time I saw this, I thought
it was a bug. When I've asked other people to test my help
projects, they also think this is a bug.
Is it possible to "make" the see also function display the
pop-up window, regardless of how many topics are assigned to the
button?
thanks in advance,
ChristyGAre you sure that you can change the permissions of symlinks themselves? I think I've tried to make files read-only via symlinks on a local server but ended up using bindfs because it wasn't possible. Even if you can, symlinking everything that might be necessary for a given environment would not be ideal, plus I don't think symlinks can be used across different filesystems.
If a real-life human can figure out if it's he/she is in a chroot and break out of it, then he/she can write a script to do the same. I want a sandbox that could run malicious code with no effect on the system (if that's possible). Also, I think if the chroot idea were truly feasible, makepkg would have been using it for years already to simply install packages in the chroot as you normally would and then package them. There would also be several sandbox applications that could run applications safely. So far I have yet to find any.
I admit that I haven't looked into using a chroot in detail though and of course I may have missed some application which creates such a setup. Right now I think using per-application namespaces with fuse seems the most promising but I won't know until I've finished implementing a test application. If it turns out that it's a dead end I'll take harder look at chroot but it really doesn't seem to be able to do what I want. -
Message got delivered to only one recepient, others in CC got nothing
Good day!
I have a problem with non delivered message to internal recepients except the only one from CC field.
Mailcleaner system sends that email to Exchange system to all recepients successfully:
2013-12-13
15:31:17 1VrSpo-000EiB-2t => [email protected] C="250
OK id=1VrSpo-000EiL-QG"
2013-12-13
15:31:17 1VrSpo-000EiB-2t Completed
2013-12-13
15:31:17 1VrSpo-000EiC-2w => [email protected] C="250 OK
id=1VrSpo-000EiO-QS"
2013-12-13
15:31:17 1VrSpo-000EiC-2w Completed
But in Exchange logs only one user receves that message, the others don’t. There was no other records in logs relating [email protected] and that MessageID
Timestamp : 2013.12.13. 15:31:22
ClientIp : 80.232.244.14
ServerHostname : SBS
SourceContext :
08D0C4AD14A55B49;2013-12-13T13:31:22.379Z;0
ConnectorId : SBS\Windows SBS Internet Receive
SBS
Source : SMTP
EventId : RECEIVE
InternalMessageId : 143089
MessageId :
<[email protected]m>
Recipients : {[email protected]}
RecipientStatus : {}
TotalBytes : 8610
RecipientCount : 1
How could I track that issue to find where dissappears the rest of copies?Hi,
According to your description, you used a 3rd party mail software to send emails to Exchange recipients. All recipients received the email successfully. Exchange log showed only one user in To box received the email while recipients in CC box missed. If
I misunderstood, please point it out.
Then I need you test the issue with a normal mail account. For example:
Use Hotmail account to send an email to the same recipients, one in To box and the others in CC box. See if all recipients received the email and check in the log about the recipients.
Regards,
Rebecca Tu
TechNet Community Support -
Not delivered to only one iphone user
Hi, I have been trying to send a message from my ipod touch IMESSAGE to one of my friend who has an iphone 4 (number), but it kept saying not delivered, so I tried texting my other friends to see if there was something wrong with my imessage but they are sending perfectly fine...So, I tried turning off my imessage and restarting my ipod and everything, but nothing works.I even search whether this person could possibly block me but I don't think iphone could actually do that, or is there a way they could make their phone stop from receiving msg? so please help me?
Have the other person activated and turned on Messages on his phone?
-
Durable Subscriber for Uniform Distributed Topic
Hi I created one Uniform distributed topic (UDT). And One Error topic which is also Uniform distributed topic (UDT) for the same Uniform distributed topic (UDT). Now i want all the error messages in error topic to persist. So i want to create one durable subscriber for error topic. For normal topic it is easy to create but how can i create durable sub scriber for Error Topic. Please suggest.
Thank you Kalyan. But i don't think that will help. Or let me rephrase my question.
Below are my observations for using Error topic for Uniform Distributed Topic (UDT) -
1. Error topic for a UDT has to be a UDT, in the same subdeployment.
2. It is not possible to create a durable subscriber for UDT from WLS console - there is no create button.
We need durable subscriber to persist error messages. So as a work around I have created a dummy SOA process as a subscriber to the error UDT and turned the SOA process off.
Do you have an idea if we can avoid creation of dummy subscriber and still persist messages in error topic (UDT) for distributed env?
will the attribute value "Delivery Mode" = Persist help? -
Concurrent nodes reading from JMS topic (cluster environment)
Hi.
Need some help on this:
Concurrent nodes reading from JMS topic (cluster environment)
Thanks
DenisAfter some thinking, I noted the following:
1 - It's correct that only one node subscribes to a topic at a time. Otherwise, the same message would be processed by the nodes many times.
2 - In order to solve the load balancing problem, I think that the Topic should be changed by a Queue. This way, each BPEL process from the node would poll for a message, and as soon as the message arrives, only one BPEL node gets the message and take if off the Queue.
The legacy JMS provider I mentioned in the post above is actually the Retek Integration Bus (RIB). I'm integrating Retek apps with E-Business Suite.
I'll try to configure the RIB to provide both a Topic (for the existing application consumers) and a Queue (an exclusive channel for BPEL)
Do you guys have already tried to do an integration like this??
Thanks
Denis -
Hi,
I have a situation as follows:
AQ JMS Topic --> OSB Proxy Service --> Invoke some business service.
I have configured WLS with AQ Foreign JMS server. I know my WLS/AQ configuration is correct as I can publish to AQ topic from OSB(no bpel) business service. But when I try to get an inbound xml(not soap) messages from AQ and let OSB Proxy Service subscribe to the JMS topic(not queue). I get the following message in WLS console
WLS Console Error message:
<Warning> <EJB> <BEA-010081> <The message-driven bean RequestEJB-3836792044197546800-63c4ae90.12e4efaf8e2.-7fbf was configured to use a JMS Topic, requires container-managed transactions, and uses a foreign JMS provider. Only one thread will be used to receive and process all messages.>
Also the messages does not get picked up from AQ topic and when I look at AQ there is no subscriber created to the JMS topic. I did set the subscriber name, XA etc. in the OSB JMS Transport advanced section.
============================================================================
In the console log I get:
<Feb 22, 2011 4:25:07 PM CST> <Warning> <EJB> <BEA-010061> <The Message-Driven EJB: RequestEJB-6379926953434238165--37f2a5df.12e4f78ff7c.-7fda is unable to connect to the JMS destination: jms.etBannerFromRMS. The Error was:
oracle.jms.AQjmsException: ORA-24047: invalid agent name RequestEJB-6379926953434238165, agent name should be of the form NAME
ORA-06512: at "SYS.DBMS_AQADM_SYS", line 6234
ORA-06512: at line 1
ORA-06512: at "SYS.DBMS_AQJMS", line 129
ORA-06512: at line 1
Nested exception: java.sql.SQLException: ORA-24047: invalid agent name RequestEJB-6379926953434238165, agent name should be of the form NAME
ORA-06512: at "SYS.DBMS_AQADM_SYS", line 6234
ORA-06512: at line 1
ORA-06512: at "SYS.DBMS_AQJMS", line 129
ORA-06512: at line 1
>
<Feb 22, 2011 4:25:17 PM CST> <Warning> <EJB> <BEA-010081> <The message-driven bean RequestEJB-6379926953434238165--37f2a5df.12e4f78ff7c.-7fda was configured to use a JMS Topic, requires container-managed transactions, and uses a foreign JMS provider. Only one thread will be used to receive and process all messages.>
<Feb 22, 2011 4:25:17 PM CST> <Warning> <EJB> <BEA-010096> <The Message-Driven EJB: RequestEJB-6379926953434238165--37f2a5df.12e4f78ff7c.-7fda is unable to connect to the JMS destination or bind to JCA resource adapter: jms.etBannerFromRMS. Connection failed after 2 attempts. The MDB will attempt to reconnect/rebind every 10 seconds. This log message will repeat every 600 seconds until the condition clears.>
<Feb 22, 2011 4:25:17 PM CST> <Warning> <EJB> <BEA-010061> <The Message-Driven EJB: RequestEJB-6379926953434238165--37f2a5df.12e4f78ff7c.-7fda is unable to connect to the JMS destination: jms.etBannerFromRMS. The Error was:
oracle.jms.AQjmsException: ORA-24047: invalid agent name RequestEJB-6379926953434238165, agent name should be of the form NAME
ORA-06512: at "SYS.DBMS_AQADM_SYS", line 6234
ORA-06512: at line 1
ORA-06512: at "SYS.DBMS_AQJMS", line 129
ORA-06512: at line 1
Nested exception: java.sql.SQLException: ORA-24047: invalid agent name RequestEJB-6379926953434238165, agent name should be of the form NAME
ORA-06512: at "SYS.DBMS_AQADM_SYS", line 6234
ORA-06512: at line 1
ORA-06512: at "SYS.DBMS_AQJMS", line 129
ORA-06512: at line 1
>
<Feb 22, 2011 4:25:27 PM CST> <Warning> <EJB> <BEA-010081> <The message-driven bean RequestEJB-6379926953434238165--37f2a5df.12e4f78ff7c.-7fda was configured to use a JMS Topic, requires container-managed transactions, and uses a foreign JMS provider. Only one thread will be used to receive and process all messages.>
<Feb 22, 2011 4:25:37 PM CST> <Warning> <EJB> <BEA-010081> <The message-driven bean RequestEJB-6379926953434238165--37f2a5df.12e4f78ff7c.-7fda was configured to use a JMS Topic, requires container-managed transactions, and uses a foreign JMS provider. Only one thread will be used to receive and process all messages.>
<Feb 22, 2011 4:25:47 PM CST> <Warning> <EJB> <BEA-010081> <The message-driven bean RequestEJB-6379926953434238165--37f2a5df.12e4f78ff7c.-7fda was configured to use a JMS Topic, requires container-managed transactions, and uses a foreign JMS provider. Only one thread will be used to receive and process all messages.>
Thanks,
PrantorAre you using an IP address for the AQ datasource host instead of a hostname ?
A search on ora-24047 revealed this thread http://kr.forums.oracle.com/forums/thread.jspa?threadID=431416 which states problem could be with using IP address. -
Clustered JMS Topics - internal "broadcast"?
Hi,
I have a 2-node cluster in WLS 8.1.
I vaguely remember this may be an old topic but just wanted to make sure. When
a message is published to a topic, it appears only one of the nodes gets the message.
And I believe that's by design. If so, what would be a good mechanism for an internal
broadcast? That is, something happened on one node and it wants everyone in the
cluster to know.
TIA,
Bill
As jms service is pinned service. That means jms server is pinned to one weblogic
instance. the messages you send to that topic can only go to that weblogic instance
where the jms server pinned.
From my understanding, a distributed topic and load balance can be used if you
want the messages go to all the iweblogic nstances.
bin
"Eric Ma" <[email protected]> wrote:
>
>Are you sure only one node gets the message? According to my understanding
>(have
>not tried) all nodes get the same messages, which is the desired behavior
>in your
>case but a problem for others.
>
>Eric Ma
>
>"Bill" <[email protected]> wrote:
>>
>>Hi,
>>
>>I have a 2-node cluster in WLS 8.1.
>>
>>I vaguely remember this may be an old topic but just wanted to make
>sure.
>>When
>>a message is published to a topic, it appears only one of the nodes
>gets
>>the message.
>>And I believe that's by design. If so, what would be a good mechanism
>>for an internal
>>broadcast? That is, something happened on one node and it wants everyone
>>in the
>>cluster to know.
>>
>>TIA,
>>Bill
>
-
Error of Foreign JMS server connecting to durable subscriber topic
Weblogic server domain is trying to connect to the durable topic configured on the other weblogic domain. (Both domain are running on weblogic 9.2 platform)
WLI 9.2 Event generator is TestPinFJ is the MDB which is trying to listen message from Foreign JMS.
Following error we have got when I did following configuration for connecting to durable topic using foreign JMS.
<EJB> <BEA-010061> <The Message-Driven EJB: TestPinFJ is unable to connect to the JMS destination: TestQueue. The Error was:
java.lang.IllegalArgumentException: port out of range:-16>
Detail configuration is as follows:
Foreign JMS : TestFS
General:
JNDI Connection URL: t3://10.20.65.95:9004 TestClient123 (where TestClient123 is the client id for durable subscriber topic )
Destinations:
Local JNDI Name: TestQueue
Remote JNDI Name: TestTopic
Connection Factories :
Local JNDI Name: TestQCF
Remote JNDI Name: TestTCF
My suspect is the JNDI connection URL is incorrect. Please advice how to configure JNDI conn url while connecting to durable topic with client id?hi Hussain,
I am the collegue of the person created this thread.
Thaks for the input. can u please suggest me how do we configure connectionfactory and JSM topic to durable subscription with ClientID.Shoudl th eClientID be same for JMSTopic and ConectionFactory?
In Domain "A" I have created JMS topic with durable subscriber wioth client ID "TestClient123" and created a conenctionfacory with same client ID "TestClient123" .
In Domain "B" i created a foreign JMS connecting to topic in Domain A using connection facatory created in Domain "A" configured as as remoteConnectionFActory.
Also the JNDI Connection URL is : t3://10.20.65.95:9004
"weblogic.jms.common.InvalidClientIDException: Client id, Testclient1, is in use. The reason for rejection is "The JNDI name weblogic.jms.connection.clientid.TestClient123was found, and was bound to an object of type weblogic.jms.frontend.FEClientIDSingularAggregatable : FEClientIDSingularAggregatable(SingularAggregatable(<9222810352589496374.1>:1):TestClient123)"
Nested exception: weblogic.jms.common.InvalidClientIDException: Client id, EAIEXTTestClient123, is in use. The reason for rejection is "The JNDI name weblogic.jms.connection.clientid.TestClient123 was found, and was bound to an object of type weblogic.jms.frontend.FEClientIDSingularAggregatable : FEClientIDSingularAggregatable(SingularAggregatable(<9222810352589496374.1>:1):TestClient123)".
weblogic.jms.common.InvalidClientIDException: Client id, EAIEXTTestClient123, is in use. The reason for rejection is "The JNDI name weblogic.jms.connection.clientid.TestClient123 was found, and was bound to an object of type weblogic.jms.frontend.FEClientIDSingularAggregatable : FEClientIDSingularAggregatable(SingularAggregatable(<9222810352589496374.1>:1):TestClient123)"
at weblogic.rjvm.ResponseImpl.unmarshalReturn(ResponseImpl.java:211)"
IS there any chnage i need to make to get this connectivity between Domain A and B working?
Appreciate your help on this. -
Messages for Durable Subscriber are not persisted with Distributed Topic
Setup:
- Weblogic 8.1 SP 6 cluster with two nodes on single Sun Solaris 5.8 host
- Distributed topic destination, separate JMS server with separate filestore for each node
- Standalone durable JMS client connecting to distributed topic destination using specific JNDI name.
- Messages are persistent (msg.setJMSDeliveryMode(DeliveryMode.PERSISTENT). Delivery mode override for topic destinations is set to "Persistent"
Test:
1) Both nodes up, starting durable topic subscriber -> durable subscriber is visible in Weblogic console -> sending X messages -> X messages are received :-)
2) Both nodes up, killing durable topic subscriber -> durable subscriber is still visible in Weblogic console -> sending X messages -> Messages Current Count for durable subscribers is set to X -> starting JMS client again
2a) subscribing to same node as before -> console says durable subscriber is active again -> X messages are received :-)
2b) subscribing to other node -> durable subscriber is automatically migrated by Weblogic to this node, console says that subscriber is active, but Messages Current Count is 0 (zero) -> 0 (zero) messages are received :_|
Where are my X messages gone?
Should I open a call or did I misunderstand the basics?
Thanks, PeterAccording to Bea Customer Support this is the normal behavior. If you kill a durable topic subscriber and reconnect it with the same id to another node, the old subscription is deleted and all messages still waiting to be delivered are gone.
Lesson learned: If you need failover for the server AND client use JMS queues.
Peter -
Messages posted to JMS Topic from OSB disappear even when not subscribed
Hi,
We are using an OSB service to publish xml messages to a weblogic JMS Topic. Message is persistent. There are no consumers for the Topic. There is no expiration limit set.
We are able to see the message from OSB reach the Topic. It stays in the Topic for a few seconds and then disappears.
The State of the message shows up as "send transaction" on the Topic in the weblogic console. And it shows up as Message Pending instead of Message Current.
Is there a way to ensure that the message stays in the Topic till it is consumed by a subscriber?
Thanks,
SenthilHi Senthil,
The topic persists messages only for subscribers, if there is no subscribers, then it is not necessary to persist the message.
This is the same case for you as well, as there are no subscribers the message gets deleted.
So first you need to have atleast one subscriber first (A dummy proxy that is reading from the topic) and then post to the topic (through your OSB service or hermes jms tool, etc .. ) . Then if you try to go and check the topic you will be able to see the message.
Hope this information helps.
Thanks,
Patrick
Edited by: Patrick Taylor on May 13, 2011 2:40 PM -
Durable subscribe to distributed topic
Hi,
The documentation states:
========================
Note: Durable subscribers (DurableTopicSubscriber) cannot be created for distributed topics. However, you can still create a durable subscription on distributed topic member and the other topic members will forward the messages to the topic member that has the durable subscription.
=======================
1. What is the technical reason that prevents durable subscribers to be created for distributed topics?
2. If we create a durable subscriber to individual members of the distributed topic, what are the failover characteristics?
a. If there is a durable subscriber to one of the physical members of the distributed topic, what happens if the server hosting the physical member dies? Lets assume we have a 2 node cluster
b. Are the messages persisted until the server comes up or does the durable subscriber automatically migrate to the other server?
Thanks in advance!
regards,
Vish TigadiHi there,
1 - The technical requirement is to ensure that the durable subscription exists "exactly once" within the clustered destination - planned for a future release.
2 and 2a - Durable subscriptions fail-over with their host destination.
2b - JMS servers can automatically fail-over using "whole server" migration (as of version 9.0) per the doc, or manually fail-over using "service migration" (as of version 7.0?). In the next upcoming release (now available as a "tech preview"), we've added support for automatic service migration of JMS servers.
Tom -
Receiving all messages including old ones from a JMS Topic
Hi all,
is there a way for a subscriber to receive all messages available in a Topic including the "old" ones?
By the "old" messages I mean messages written in the Topic before the subscriber really subscribes or messages created oven before the subcrieber exist.
What is the best solution for this? Are there any?
Many thanks,
Nelson.Hi Nelson,
Any mechanism for reprocessing messages is up to your JMS provider. If I may plug DropboxMQ, it has a simple but effective mechanism to do exactly as you wish. With DropboxMQ every messages is a file. Redelivery is as simple as moving messages from one directory to another. Here is the link:
[http://dropboxmq.sourceforge.net]
Cheers,
Dwayne -
Durable subscriber configured for the topic - reconnect policy
Hi,
we have Durable subscriber configured for the topic. When ever the managed server associated with the Topic is restarted, we have to restart subscriber to receive the messages again.
we did tried using the reconnect policy to all , still we have same issue, could you please provide your suggestions.
Susbcriber is not throwing the connect exception as well,when ever the managed server goes down also.
thanks
ARunI would suggest, if you have done so, that you set an Exception listener on the connection, or on the session using WLS extension interface, so that your client will get Exception on server failure and refresh the JMS objects (connection/session/subscriber).
Maybe you are looking for
-
All of a sudden, when I try to open up iweb to edit site, I get the message "unexpected quit" to reopen, retry, report. I did all three. Could installing iLife 06 have anything to do with it? It was working just fine until I installed that and opened
-
I have a new iPad2 16GB+3G. ( Only got this yesterday.) I have set up a wireless router so am able to use WiFi at home. When I attempt to set up a cellular data connection (ATT) I get to the "view account" which asks for my login ID and password, wh
-
Uninstalling Extension that won't go away
I have Dreamweaver 8 and installed Indigo Help Publisher for Dreamweaver to try it out. After evaluating it, I uninstalled it, but it didn't completely uninstall. I've reinstalled and uninstalled it several times to no avail. When I start DW, I get t
-
How to modify a datafile using file read and file write
I have a datalog file containing port and DMM setup information. I want to read this file into an aray, update or modify it, and write it to a file. I can read the file in, but I am at a loss on how to modify it since it is stored in an indicator.
-
Oracle ADF inputText refreshing problem in subform
Hi guys. There are inputText, outputText and inputDate components in the form's of in a pop-up window(twitter bootstrap). This components is in a subform. The current values of the outputText and inputDate components (in managed bean) are reflected v