Non Durable subscribers

Hi,
I am currently developing an application in java that will use Oracle 8i's (8.1.7 to be more specific) Advanced Queuing Java API. Is there any way to mimic a non-durable subscriber in Oracle 8i? Both 8i and 9i don't support non durable subscribers.
Thanks,
Jeff
null

I'm not sure what exactly you mean by non-durable subscribers. If you are mean the subscriptions should be dropped after the session is deleted - you can create unique subscriber names for every session and unsubscribe when a session is closed. You'll have to record these subscriber names somewhere persistently and in case of abnormal session termination, you'll have to drop them later

Similar Messages

  • Non-durable subscribers persists after the end of their JMS session

    Hi all,
    I'm using OAQ as my JMS Provider.
    I have created code for publishing and recieving messages to/from topics. Messaging works fine, but I have one problem:
    All my non-durable subscribers persists after the end of their JMS session. I always perform unsubscribe operation in code and then closing session and connection.
    When I subscribe to topic, there's one more line in DB table ( etc. NAME: TSUB_1_24E6DB98A2EB7712E040A8C, TYPE: 65). I have expected that subscribers will be deleted after performing unsubscribe operation, but they don't...
    Can you help me with this problem? Thanks for any answer.
    Best Regards,
    Juraj

    Have you found a solution to this yet - because I face the same problem

  • A question regarding Synchronous, Pub-Sub non-durable model

              Scenario:
              Non-durable, publish-subscribe, syncronous model.
              Publisher1 and Publisher2 both post messages to a Topic at the same time. How to
              design the non durable Subscribers that would be able to obtain both these messages
              in the same thread?
              e.g. if i in my program I create 2 subscribers, with selectors configured for the
              2 different messages...
              program start
              1. create sub1 using selector1 for topic1
              2. create sub2 using selector2 for topic1
              3. sub1.receive(timeout)
              4. sub2.receive(timeout)
              5. further processing using both the obtained messages
              6. program end.
              In the above case, if messages arrive at the same time in the topic, only sub1 will
              be able to get the message, as sub2 won't be active at that time.
              Is there anyway to acheive this considering Synchronous, Pub-Sub non-durable model
              is to be used?
              Many thanks...
              

              Thanks for the response.
              Is a subscriber active the moment it is created?
              e.g. objSub=tsession.createSubscriber(topic,strMessSelector,true);
              or it is said to be active when we call
              objSub.receive() (in case of synchronous subscriber)
              "Shean-Guang Chang" <[email protected]> wrote:
              >I don't know the details of the design. You can use a single subscriber
              >without a selector and then do two receive to get both message.
              >If you have to use selector so sub1 can only select message from pub1 and
              >sub2 can only select message from pub2 then you need sub3 without a
              >selector and sub3 will do blocking receive first and then once the sub3
              >receives a message you can use sub1 and sub2 to do receiveNoWait.
              >
              >e.g.
              >while (true) {
              > if (sub3.receive() ! = null) { // have message in the topic
              > if (sub1.receiveNoWait() != null) { // got message from pub1
              > do something
              > }
              > if (sub2.receiveNoWait() != null) {// got message from pub2
              > do something
              > }
              > }
              >}
              >
              >"vinay s" <[email protected]> wrote in message
              >news:[email protected]...
              >>
              >> Scenario:
              >> Non-durable, publish-subscribe, syncronous model.
              >> Publisher1 and Publisher2 both post messages to a Topic at the same time.
              >How to
              >> design the non durable Subscribers that would be able to obtain both these
              >messages
              >> in the same thread?
              >> e.g. if i in my program I create 2 subscribers, with selectors configured
              >for the
              >> 2 different messages...
              >>
              >> program start
              >> 1. create sub1 using selector1 for topic1
              >> 2. create sub2 using selector2 for topic1
              >> 3. sub1.receive(timeout)
              >> 4. sub2.receive(timeout)
              >> 5. further processing using both the obtained messages
              >> 6. program end.
              >>
              >> In the above case, if messages arrive at the same time in the topic, only
              >sub1 will
              >> be able to get the message, as sub2 won't be active at that time.
              >>
              >> Is there anyway to acheive this considering Synchronous, Pub-Sub
              >non-durable model
              >> is to be used?
              >>
              >> Many thanks...
              >
              >
              

  • JMS Messages keep on growing for a Topic with non-durable consumers

    I have a JMS Server whose "Messages Current" keeps on growing after every message send to the topic. All the consumers are non-durable. The session is a non-transacted session with Auto Accknowledge parameter. My client does recieve the message, but it does not go down from the "Messages Current" in the WLS console. Also once the server is restarted, the messages go down to 0.
    I am using 9.2 SP2 on a Solaris environment.
    Any insight would be helpful

    It's possible that one or more the subscribers is stalled for some reason and so is not actually receiving and processing messages. This would cause messages to accumulate. You can examine statistics for individual consumers on the console to see if this is an issue.
    Also, there could be a durable subscription on the topic left over from some previous application you used with the topic. There are statistics for these as well.
    Yet another possibility is that the clients are receiving the messages but are failing to acknowledge/commit them. You wrote that the sessions are "auto-acknowledge" but they could accidentally be "transacted". Check to make sure that the first parameter passed to "createSession" is true (it should be false), and that the second parameter is set to auto-acknowledge.
    Finally, if you happen to be using a distributed topic, keep in mind that if one of the topic members is unavailable/crashed/down messages will accumulate on the other distributed topic members until the unavailable member is restarted (at which point they will be forwarded to the restarted member).
    Tom

  • Multiple durable subscribers and message redelivery

    I am using WLS 8.1 SP1. I have a topic that has several durable MDB subscribers. In the case one of the MDB rolled back the TX, upon redelivery of the message, do all durable subscribers receive the message again, or just the one that rolled back the TX gets the redelivered message?
              Thanks.

    Hi Eric!
              Each durable subscription gets its own copy of each published message, and only one MDB deployment can attach to a particular durable subscription at a time. So when an MDB durable subscriber rolls back the receive of a message, the rolled back message will be redelivered to the same MDB deployment only.
              The same reasoning applies to non-durable subscriptions as well.
              Tom, BEA

  • Query regarding durable subscribers in JMS Adapter (11g)

    Hi , I am facing some issue with using durable subscribers..
    I am doing a POC in which I have two consumers (consumer 1 and consumer 2) listening to a topic.
    On the server console, the monitor tab of the JMS topic shows number of consumers as 2 which is good.
    Also, when any message is put on the topic , BPEL processes for both consumers get triggered as expected.
    Now, I add durable subscriber ID as 123 to one of the consumers (consumer 1)
    After deploying the code, the count for the number of current consumers listening becomes 1.
    So I create a durable subscriber on the console with id as 123 after which the consumer count is back to 2.
    The issue however is that, now when I put a message on topic , only consumer 2 is triggered.
    The message for consumer 1 can be seen on the durable subscriber 123's page.
    My question is that, since the consumer is listening to the topic then why is the message going to the subscriber instead of creating instance ?
    I also tried following :
    1. created a new outbound connection pool in the resource adapter
    2. setting property FactoryProperties to value "ClientID=123"
    3. pointing the adapter connection factory to this new location
    but this is also not helping.
    Could anyone please help me out in this ?
    Thanks and Regards,
    Ketan

    did u have any luck? can u tell me steps

  • Problem in using Durable subscribers

    I am facing a strange problem. I am using JBoss App Server as JMS provider. I have a client which is nothing but a durable subscriber(consumer). I am registering the client with a client ID that is generated dynamically everytime the client comes up. Also the consumer has some message selectors. Assume this client is not running and any other client is publishing message for this clinet. When this durable subscriber client comes up, it is not receiving the message. If the client is active when the message is published, it is receiving and processing the message( It is behaving like a non-durable subscriber). I don't know why this problem is happening. Does it have something to do with client ID?? Any help in this regard will be highly appreciated. You can also reach me through my mail id ( [email protected]).
    Thanx

    The durable subscription name is actually made up of a combination of the client id and the durable subscription name.
    In order to pick up a previously created durable subscription you need to have the same client id, as you are dynamically generating a different client id each time you are getting new durable subscription. Hence it looks like they are non-durable.
    I don't know anything about JBoss, but if it has tools for looking at durable subscriptions I would use it, you'll find that their are many.
    Hope this helps
    Alasdair

  • Durable subscribers questions

    Hello,
              I am building an application that has two WebLogic servers
              communicating certain information between them using JMS. I am using
              WebLogics implementation of JMS including destinations and messaging
              bridges.
              I am experiencing some problems.
              Server 1 takes files and puts them in a Stream Message and publishes
              them to a topic as shown here:
              Context context = new InitialContext();
              TopicConnectionFactory topicFactory = (TopicConnectionFactory)
              context.lookup(sourceDescriptor.getConnectionFactory());
              connection = topicFactory.createTopicConnection();
              session = connection.createTopicSession(false,
              Session.CLIENT_ACKNOWLEDGE);
              Topic topic = (Topic)
              context.lookup(sourceDescriptor.getTopicJNDIName());
              TopicPublisher publisher = session.createPublisher(topic);
              publisher.setDeliveryMode(DeliveryMode.PERSISTENT);
              StreamMessage message = session.createStreamMessage();
              for (int i = 0; i < files.length; i++)
              Loop through reading a set of files into the StreamMessage publishing
              each.
              publisher.publish(message);
              Topic config.xml
              <JMSTopic JNDIName="topic/topicName"
              Name="Topic Name" StoreEnabled="default"/>
              Destination config.xml
              <JMSBridgeDestination
              AdapterJNDIName="eis.jms.WLSConnectionFactoryJNDINoTX"
              ConnectionFactoryJNDIName="ConnectionFactory"
              ConnectionURL="t3://localhost:7001"
              DestinationJNDIName="queue/queueName" Name="Queue Destination
              Name"/>
              <JMSBridgeDestination
              AdapterJNDIName="eis.jms.WLSConnectionFactoryJNDINoTX"
              ConnectionFactoryJNDIName="ConnectionFactory"
              ConnectionURL="t3://machinename:8001"
              DestinationJNDIName="topic/topicName"
              DestinationType="Topic" Name="Topic Source Name"/>
              Messaging Bridge config.xml
              <MessagingBridge
              Name="The Bridge"
              QOSDegradationAllowed="true" QualityOfService="Duplicate-okay"
              SourceDestination="Topic Source Name"
              TargetDestination="Queue Destination Name" Targets="server1"/>
              Connection Factory
              <JMSConnectionFactory JNDIName="ConnectionFactory"
              Name="Server1 Connection Factory" Targets="server1"/>
              All settings in WebLogic are default for the configuration of this as
              far as I know.
              The bridge is using Duplicate Ok QOS at this point.
              This works like a charm as long as server which has the destination
              queue is up and running and has received messages in the past.
              The first problem is the first set of messesages are sent to the Queue
              on Server 2 but the MDB does not pick them up. I have left it running
              for an hour and these messages sit in the pending state for the
              monitoring of the Queue. In order to get this first set of messages
              to be processed I have to restart Server 2 at which point the initial
              messages are processed. Any subsequent messages are processed by the
              MDB immediately upon delivery. What is the cause of this and is there
              any way around having to restart after the first messages are received
              creating the file in the message store? Does this have anything to do
              with the fact that there is no file in the message store until the
              first messages are received and thus the MDB is not looking since
              there was nothing there on start up? This seems very odd....
              The second problem has to do with durability. I start Server 1 and it
              waits for a finish file and when it sees it it takes the files and
              puts them on the topic as described. As long as Server 2 is up and
              running at that time everything is fine. If However Server 2 is not
              running at that moment and is started at a later time then the
              messages seem to be lost. What could cause this? Is there any way I
              can visually see that the message is being held on Server 1? The
              bridge from this topic on Server 1 to the queue on Server 2 is
              configured on Sever 1 and you can see that it is working when Server 2
              is not running due to the connection refused messages the bridge
              throws. Is the bridge accepting the messages from the topic enough
              for the topic to decide it is done with them and delete them? Could
              the acknowledgement from the queue on another bridge for the same
              topic be confusing the topic and deleteing the message before all
              subscribers get it? This is a big issue since it seems that durabilty
              is only guarenteed when both servers are running and a message is
              created.
              Any help on this would be appreciated...If you wouldn't mind cutting
              and pasting any responses to my email as well it would be appreciated
              as I use google for groups and it has a long turn around.
              TIA...
              

    Hi Kartheek,
    Once we create a TOPIC in NWA.In durable subscribers tab subscription ID and Subscription name will be automatically created once you publish the message in to TOPIC.
    check in NWA-->jms server configuration-->durable subscribers.
    thanks
    Purna

  • AQ JMS: non-durable subscriptions not cleaned up

    Whenever I create a non-durable subscription I see a TSUB_... subscription in the AQ$ tables. This subscription does not disappear when the client terminates abnormally.
    This can be very annoying because these queues fill up quickly and deleting a big subscription locks the queue for a substantial amount of time.
    Is there something I missed - should the QMN take care of these orphaned subscriptions ?

    We are having exactly the same problem...

  • Two durable subscribers with same ID in Weblogic 9.2 MP 2?

    External JMS durable topic subsribers of a distributed topic destination are connected to a Weblogic cluster with 3 Nodes. The clients are started with shell scripts on different hosts. A watchdog is checking if the clients are still alive; if not, they are restarted automatically. Randomly a node of the cluster is chosen and the client is reconnected (Note: Weblogic does not support durable topic subscribers for distributed destinations, this means you cannot connect with a cluster URL)
              However, from time to time we see two durable topic subscribers with the SAME ID connected on two different destinations: one of them is active, the other is not.
              This should not be possible. Is this a Weblogic bug or a mis-configuration of our domain.
              Thanks,
              Peter

    It turned out that our operating team stops the clients with "kill -9". I guess that this may be the reason that the durable subscribers remain registrated on the server? Of course, one should never use "kill -9", however sometimes this can not be avoided:
              - Weblogic 8.1 SP 4 could not startup if a durable "ghost" subscriber was registrated
              - Weblogic 8.1 SP 6 could handle this in a robust way!
              - Weblogic 9.2 MP1/2 seems to go to an unstable state. Once, for example, we registrated 1635 connections for one Weblogic instance with the state "CLOSE_WAIT" (Of course you may argue this may be the cause of our inconvinience. However, normally this value is less than 20)
              The fact that the durable subscribers are not correctly placed in the Weblogic console may not be correlated to the problem above, but just another bug. It is just annoying, as it is nearly impossible to unregister the durable "ghost" subscriber via the console. Sometimes even the subscriber id is not shown.
              Do my comments sound reasonable?
              Thanks, Peter

  • Create durable subscribers, JMSAdapter JNDI and DBAdapter JNDI using WLST

    Hi All,
    I have developed some WLST scripts to create new JMS servers, JMS modules which includes queues, topics and connection factories, data sources, etc.
    I can successfully create topics using WLST but I cannot see any option to create durable subscribers using WLST. Also, I can create JMS server JNDIs along with its modules but I am unable to create JMSAdapter JNDI ( under Deployments ) using WLST.
    Can anyone please help me out?
    Thanks in advance,
    -Karan

    Hi,
    I have the same problem, and when I try to record it. The py file contains nothing.
    I know sometime weblogic server doesn't record, such as outbound connection factory. I guess durable Subscribers is another one.
    Anyone know know to do this?
    Cheers,
    Tim

  • What happens if I don't set a client id for durable subscribers?

    What happens if I don't set a client id for durable subscribers?

    If you do not set a clientID in 2.0, it will automatically set a clientID for
    you. This means that you MUST unsubscribe the durable subscriber on the same
    host (since otherwise the clientID's will be different)
    In general, its good practice to set a client ID anytime you are using durables
    (so that you have some control).

  • Limit Amount of messages stored for durable subscribers

    Hello,
    Is there any way to limit the number of messages stored for durable subscribers in OpenMQ. ActiveMQ has a property you can set: constantPendingMessageLimitStrategy = 10. Does OpenMQ have a similar property?
    Thanks,
    Ed

    You can set limit on the destination that the durable subscriber subscribed to (see imqcmd create dst -o option)

  • Weblogic admin - deleting multiple durable subscribers?

    I may be in the wrong forum, but there is a problem in our code that has resulted in over 700 inactive durable subscribers. From the weblogic console gui, I can only delete these one by one. Is there a way to delete multiple subscribers (perhaps from the command line) without deleting the JMSTopic. One by one will take quite a long time.
              thanks in advance - Dan

    If the store has no data that you care about, you could shutdown WebLogic and delete the store's file(s) (or database table(s) if its a JDBC store), then restart WebLogic.
              The durable subscriber delete is available on the runtime mbeans, so another option is to write a WLST script or java program to call the deletes. I don't personally have any sample code for this.
              Tom

  • Doubt about durable subscribers

    I read this in the weblogic docs
              For durable subscriptions, WebLogic JMS stores a message in a persistent
              file or database until the message has been delivered to the subscribers
              or has expired, even if those subscribers are not active at the time
              that the message is delivered. A subscriber is considered active if the
              Java object that represents it exists. Durable subscriptions are
              supported for Pub/Sub messaging only.
              Now how does the weblogic server know how many subscribers are there? To
              describe more accurately
              1. One weblogic server, say version 7.0. One topic has been configured
              along with
              the other required stuff.
              2. Suppose 3 subcribers connect to the server
              3. A message is sent to the topic.
              4. Now if I kill one of the subscribers then is weblogic going to wait
              to deliver to the killed subscriber before marking the message as
              delivered?
              Shiva.
              

    WebLogic does not do anything different than any other
              JMS vendor. The behavior of durable subscriptions is
              explicitly defined in the JMS standards.
              The durable subscriber client explicitly creates "subscription"
              when it first comes up. The JMS server stores a record of this
              subscription both in memory and on disk. The subscription
              does not go away until the client explicitly calls
              "unsubscribe" to delete it. The subscription,
              as per the JMS spec, is uniquely identified by a combination
              of: the topic specified by the client, the connection-id
              specified by the client, and the subscriber-id specified by
              the client. The subscription is not identified in any
              way by "JVM id". All messages sent after the subscription
              is created accumulate, even if the client is disconnected.
              The client reconnects by specifying by subscribing with the
              same identifiers it used to so subscribe previously.
              Tom
              Shiva P wrote:
              > Guess my question is not clear. Here it is again.
              >
              > How does weblogic know that it has to wait for the durable subscriber? I mean
              > is it the JVM id of the subscriber or some other unique thing that weblogic
              > uses to know about all the durable subscribers?
              >
              > shiva.
              >
              > Tom Barnes wrote:
              >
              >
              >>Shiva P wrote:
              >>
              >>>I read this in the weblogic docs
              >>>For durable subscriptions, WebLogic JMS stores a message in a persistent
              >>>file or database until the message has been delivered to the subscribers
              >>>or has expired, even if those subscribers are not active at the time
              >>>that the message is delivered. A subscriber is considered active if the
              >>>Java object that represents it exists. Durable subscriptions are
              >>>supported for Pub/Sub messaging only.
              >>>
              >>>Now how does the weblogic server know how many subscribers are there? To
              >>>describe more accurately
              >>>
              >>>1. One weblogic server, say version 7.0. One topic has been configured
              >>>along with
              >>>the other required stuff.
              >>>2. Suppose 3 subcribers connect to the server
              >>>3. A message is sent to the topic.
              >>>4. Now if I kill one of the subscribers then is weblogic going to wait
              >>>to deliver to the killed subscriber before marking the message as
              >>>delivered?
              >>
              >>Yes, if the subscription is durable.
              >>
              >>Durable subscription continue to exist even if the consumer
              >>is killed (or closed). Messages continue to accumulate in
              >>them. This is the whole purpose of durable subscriptions. If
              >>you want the messages to go away when the consumer goes away
              >>do not use a durable subscriptions.
              >>
              >>Tom
              >>
              >>
              >>>Shiva.
              >>>
              >>
              >
              

Maybe you are looking for

  • Start Routine: Syntax error in routine 2LIS_03_BF Transformations

    Hi experts, I enhanced the 2lis_03_bf data source, and replicated the data source in bw system, i have mapped the transformations and when i try to activate the transformations it is giving the below error. Start Routine: Syntax error in routine when

  • MoveUser command in Verson 6.3 is weird 1

    Hi everyone. ^^ I have one question about "MoveUser" command in mail server version 6.3. I upgraded one of my store server to version 6.3. When I moved users from version 6.3 to 5.2 with 6.3 MoveUser command, it didn't work. but reverse case (5.2 to

  • Outlook 2013 freeze in citrix session

    We have Exchange 2013 in DAG and F5 for load balancing. Very few users (randomly) daily complaints outlook freeze inside citrix. We do not see any error in event viewer or RPC log of Exchange servers. Please shed some lights on things which need to b

  • ABAP routin for geeting previous month

    Hello....... I want to writ an ABAP routin at the infopackage level. I want to get the previous month ( period ). example : if sy-datum is 2007.01.01 output : 2006.12.01. reply. Thanks in advance.

  • Trial version missing files?

    When i open the trial version of pages, or the other programs in iwork, a box pops up stating theres missing files. I click on run anyway and it seems to work ok. Are these files missing because its the trial version?