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

  • Is it possible to prevent the See Also function from displaying the topic window when only one "see also" topic exists?

    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,
    ChristyG

    Are 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
    Denis

    After 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

  • OSB(11.1.1.4) errors when ServiceProxy configured to AQ JMS Topic(not Q)

    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,
    Prantor

    Are 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, Peter

    According 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,
    Senthil

    Hi 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 Tigadi

    Hi 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
    ARun

    I 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