Correlation between Destinations and Queues

Hello,

Do you have any idea what is the link between the Destination created in MWS under Naming Directories and the queues created under Clients → Add Queue?
We randomly created a link between these two and we cannot figure out what that is.

Hi Bogdan,

please provide your Messaging Bus (Broker or UM) with version and fixes applied.

Under Naming Directories you define a JNDI services containg the definitions for Connection Factories and Destinations.

If you have to create a client or a document type depends on destination type:
Queue → Client
Topic → Document Type

When creating the Clients for the queue you select “From JNDI” under “Add Queue”, select the naming directory services, the connection factory and the destination.

See Messaging Programmers Guide for further informations.

Regards,
Holger

Hi Holger,

We are using Broker (9.9).
What we are trying to achieve is to send a message into a queue by using a JMS Adapter Producer service.
This is what we did so far:
First we created a queue by using the service wm.server.jms:createQueue called myQueue.
Afterwards we created a JMS Provider under Naming in MWS then based on this provider we created a QueueConnectionFactory called testConnectionFactory. Then we set up a JMS Adapter connection in IS and put the testConnectionFactory in the field ‘QueueConnectionFactory JNDI Name’.
Then we created a JMS adapter producer service. First we tried sending a message to the queue created with the jms:createQueue service (myQueue) by setting the name ‘myQueue’ as the JMSDestination input. It did not work so we tried another approach: we created a Destination (JNDIQueue) under Naming (in MWS) and set the destination name as testQueue. Afterwards we set the name ‘testQueue’ as JMSDestination and ran again the producer service. This time it worked and we noticed that the actual message was sent to the queue myQueue (which is defined in Clients). We do not understand what is the link between testQueue and myQueue.
In order to better understand how it works we created another Destination (JNDIQueue2) and set as destination name ‘testQueue2’. Afterwards we created a new queue (myQueue2) using these settings:

  • same provider as for the testQueue, Queue Lookup Name: JNDIQueue2, same connection factory as for testQueue.
    Afterwards we tried to send a message in the JMSDestination testQueue2 and we were hoping that the message would be sent to myQueue2. Instead by got following error:
    [ADA.680.202] JNDI Name Not Found: “testQueue2”.
    [BRN.101.1002] Lookup Error: Lookup failed: Name testQueue2 not found.
    Do you have any idea what we are doing wrong?
    It is there a specific order in which we should create all prerequisite ? Can you please gave us a brief description of the steps that we should do?

Hi,

see “9.6 Broker Messaging Programmers Guide” for further informations.

Are you using build in JMS functionality or the WmJMSAdapter-Package?

Can you share your configuration settings?

Usually the order of configuration will be as follows:

  1. create provider in MWS Broker UI
  2. create connection Factory
  3. create destination
  4. create queue in Broker (Use “From JNDI”)
  5. connect IS to the provider (Settings → Messaging - JNDI Alias)
  6. create a connection for your factory (Settings → Messaging - JMS Alias)

You can then use the build-in services for JMS from WmPublic-Package (pub.jms-Folder).

See IS Build-In-Services Guide for details on these services.

Please note, that the latest version of Broker is 9.6 (still valid for current wM Versions), but it will be replaced by UM in the future.

Regards,
Holger

Hi Holger,

Thank you for your answer. We are trying to use the WmJMSAdapter-Package.
I am not sure where I can find the from JNDI option when creating a queue in MWS UI. I can only see the option From Naming Directory.
All that we are trying to achive for now is to send a message to a queue by using a Message Producer Adapter Service.

Hi,

“From Naming Directory” is the correct one I had in mind, but I did not know the exact name.

We have not use the WmJMSAdapter package since quite a long time as we have migrated our implementation of JMS Handling to the build in variant when it became available.
This was easier to implement for us and made code easier to understand

Which Version of WmJMSAdapter package are you using?
Any Fixes applied to it?

Please take a look at “Adapter for JMS Install and Users Guide” for informations.

Please note that the Package is quite old and will not take benefit of new features introduced after ist creation.
Probably this will not work with Universal Messaging.

Regards,
Holger

Hi Holger,

We chose this approach because we thought that the wm -JMS adapter package brings more features than the standard services which are to be found in the pub.jms folder like jms.send or jms.receive. We basically want to have more control over a queue so that we can for example query it based on a pattern or message type.
The pub.receive service retrieves only the first document in a queue. We would also like for example to retrive a specific document from the queue based on some parameters.

Hi,

you can try to use JMSTrigger or JMS Consumer with option messageSelector for that.

If the Build-In-Services from IntegrationServer are not sufficient you can try to have a look at the Broker Java API, which in turn contains the Broker JMS API as well.

Make sure you have applied the latest Fixes for Broker 9.6 Core and Broker 9.6 Java API.
Broker 9.6 Java API Fix needs to be applied to all installations that are connecting to this Broker instance.

Can you describe your business case a bit more in detail please?
I suppose that the members together are able to find a solution even with using the build-in feature then.

Additonal Note:
Using the WmJMSAdapter causes additional license and maintenance fees while using the pub.jms-services is included in the IntegrationServer license and maintenance.

Regards,
Holger

Addendum:

As per Adapters Requirements Guide (from 12.07.2016, just downloaded it), Broker 9.6 is not yet supported.

Latest supported Broker version is 9.5 SP1 for all current webMethods versions 9.x (applies to the IntegrationServer where Adapter for JMS is installed on).

Please have a look at the Readme for the Adapter for JMS, chapter 3 (Usage Notes).

Please share the About-Page of the Adapter for JMS as well as the Updates page from IntergrationServer (/WmRoot/updates.dsp) as this might help to identify issues related to fixes.

Regards,
Holger

Hi Holger,

Thank you for your response. We tried to use the inbuilt IS services pub.jms.send and pub.jms.receive and came across a very strange issue. We manage to send messages to a queue with the pub.jms.send service but we are having some issues with the pub.jms.receive service. 

Example: We send a message to a queue with the JMSCorrelationID=3. Afterwards we run the pub.jms.receive service using the proper selector and we do not get the message from the queue. However, after some seconds if we run the same pub.jms.receive service we get the message from the queue. Do you have any idea why we are having this delay in being able to consume a message? Is it a bug maybe?

Hi,

can share some screen shots fo your consumer and receive service implementation please?

Did you try to use a JMS Trigger instead to pick up the message?

Regards,
Holger