Forum Stats

  • 3,874,198 Users
  • 2,266,682 Discussions
  • 7,911,767 Comments

Discussions

How to put message on remote queue from Business service

625709
625709 Member Posts: 11
edited Nov 23, 2009 4:02AM in SOA Suite Discusssions
Hello All,
I have a requirement to send binary messages to IBM remote queue from business service. All of the time it;s ended with exception that remote queue not found and MQ 2045. I have try to add Put Options in business service properties but all in vain.

Is there any way to send message to remote queue from OSB? Thank'x in Advance.
Shamim.
Tagged:

Answers

  • 675693
    675693 Member Posts: 160
    Could you give us more details about your configuration and the exception?

    If configured correctly sending messages to IBM's MQ should not be a problem. Are you using the MQ transport?

    http://download.oracle.com/docs/cd/E13159_01/osb/docs10gr3/mqtransport/intro.html

    You could also look at weblogic's messaging bridges. With a setup using a bridge, your business service would publish to a local queue (in my experience a lot more efficient) and weblogic's messaging bridge would take care of forwarding the messages to the foreign destination. With the added benefit of hiding any availability problems of the foreign destination for your business service. If the MQ queue is not available your business service won't fail, the bridge will take care of forwarding the messages once the queue is available again.
  • 625709
    625709 Member Posts: 11
    Thank's for quick reply,

    Yes i have configure MQ transport according to oracle documentation, uri of the messaging queue are as follows mq://NSI.TEMP.OUT?conn=NsiDistributions/resources/MQResource
    When NSI.TEMP.OUT is a local queue everything works fine, but when it's a remote queue it throws exception MQ 2045, which mean that MQRC_OPTION_NOT_VALID_FOR_TYPE.
    I also tried to configure transport PUT option with this MQC.MQOO_OUTPUT parameter, but couldn't success to publish.
    Thank'x
    Shamim
  • 675693
    675693 Member Posts: 160
    Ok I understand now. When you said remote I thought you meant a destination outside the service bus, and not an MQ remote queue. Unfortunately I have little advice to give. The documentation states:
    When you create an MQ service, select the transport protocol as mq and specify the Endpoint URI in the Transport Configuration >page. Specify the Endpoint URI in mq://local-queue-name?conn=mq-connection-resource-ref format where

    local-queue-name is the name of the local queue configured on the MQ server
    mq-connection-resource-ref points to the location of the MQ connection resource
    I don't know if it's possible to use a remote queue directly, my knowledge of MQ is limited. Hopefully someone else can help. Or you could contact support and ask if remote queues are supported.
  • 625709
    625709 Member Posts: 11
    Thank you eduardo,
    according to your suggestion "mq://local-queue-name?conn=mq-connection-resource-ref", this configuration only work with local messaging queue. Still i haven't found any way to publish message to remote messaging queue, will try to create trigger on queue to redirect message from local queue to remote queue.

    Shamim.
  • Hi Shamim,

    There is a possibility of using the alias queue to realize your requirement to publish a message to the remote queue.

    The IBM documentation states "+An alias queue allows applications to access a queue by referring to it indirectly in MQI calls. When an alias queue name is used in an MQI call, the name is resolved to the name of either a local or a remote queue at run time.+"

    I am not sure how this would happen in OSB. But going by the usage of the alias queue, this should work for you.

    You can create an alias queue on the local queue manager that points to the remote queue, to which you want to publish the message. And then use the alias queue name in the URI.

    You might want to give this a try.

    Thanks.
    Patrick
  • 735541
    735541 Member Posts: 1
    I configured the MQ using mq://local-queue-name?conn=mq-connection-resource-ref , where local-queue-name is the name of the local queue on the MQ Server, but the channel used in the MQ server to the queue must be a Channel Server type.
  • 625709
    625709 Member Posts: 11
    The problem i have describe above is not related with local MQ. I have remote MQ manager which located on another computer. when i am trying to connect with REMOTE/Alias queue created on MQ manager, OSB throws exception that such queue is not exists.

    best regards
    Shamim
This discussion has been closed.