Details

  • Type: Task Task
  • Status: Closed Closed
  • Priority: Major Major
  • Resolution: Fixed
  • Affects Version/s: 1.3
  • Fix Version/s: None
  • Component/s: Examples / Tutorials
  • Labels:
    None
  • Environment:

    n/a

  • Similar Issues:
    None

Description

Please extend your list of JMS provider with SwiftMQ. We've created a new How To here:

http://www.swiftmq.com/developers/howto_swiftmq_mule13/index.html

Thanks.

Activity

Hide
Andrew Perepelytsya added a comment -

Hi Andreas!

The docs look good. I have a question about this dot/underscore notation and the alias workaround. Did it fail if Mule used the underscore directly in the name? If yes, what was the error? This will help us see if things can be improved from the Mule's side.

Show
Andrew Perepelytsya added a comment - Hi Andreas! The docs look good. I have a question about this dot/underscore notation and the alias workaround. Did it fail if Mule used the underscore directly in the name? If yes, what was the error? This will help us see if things can be improved from the Mule's side.
Hide
Andreas Mueller added a comment -

SwiftMQ's physical queue names are <queue>@<router>. They are automatically registered in SwiftMQ's JNDI upon creation. So if you do a JNDI lookup, you'd have to use @router in your Mule notation. To avoid that, we usually define a JNDI alias and map it to the physical queue name. So the JNDI alias is actually not a workaround but common practice. Because I did not want to change your Mule queue names, I just defined the alias and mapped it to the underscored queue names. Bingo.

Show
Andreas Mueller added a comment - SwiftMQ's physical queue names are <queue>@<router>. They are automatically registered in SwiftMQ's JNDI upon creation. So if you do a JNDI lookup, you'd have to use @router in your Mule notation. To avoid that, we usually define a JNDI alias and map it to the physical queue name. So the JNDI alias is actually not a workaround but common practice. Because I did not want to change your Mule queue names, I just defined the alias and mapped it to the underscored queue names. Bingo.
Hide
Andrew Perepelytsya added a comment -

The @ sign can be escaped with the %40 in Mule URI, could you try this one? I know I'm playing devil's advocate here a bit, but having a choice for the end user is good in case of Mule

Show
Andrew Perepelytsya added a comment - The @ sign can be escaped with the %40 in Mule URI, could you try this one? I know I'm playing devil's advocate here a bit, but having a choice for the end user is good in case of Mule
Hide
Andreas Mueller added a comment -

Yes, that works too:

<endpoint-identifiers>
<endpoint-identifier name="LoanBrokerRequestsREST" value="jetty:rest://localhost:8080/loanbroker"/>
<endpoint-identifier name="LoanBrokerRequests" value="vm://loan.broker.requests"/>
<endpoint-identifier name="LoanQuotes" value="jms://esb_loan_quotes%40router1"/>
<endpoint-identifier name="CreditAgencyGateway" value="jms://esb_credit_agency%40router1"/>
<!-- here we're telling Mule to invoke a remote Ejb directly (not host a
proxy service for the remote object as with the other example in mule-config-with-ejb-container.xml example)
-->
<endpoint-identifier name="CreditAgency" value="ejb://localhost:1099/local/CreditAgency?method=getCreditProfile"/>
<endpoint-identifier name="LenderGateway" value="jms://esb_lender_service%40router1"/>
<endpoint-identifier name="LenderService" value="vm://lender.service"/>
<endpoint-identifier name="BankingGateway" value="jms://esb_banks%40router1"/>
<endpoint-identifier name="Bank1" value="axis:http://localhost:10080/mule"/>
<endpoint-identifier name="Bank2" value="axis:http://localhost:20080/mule"/>
<endpoint-identifier name="Bank3" value="axis:http://localhost:30080/mule"/>
<endpoint-identifier name="Bank4" value="axis:http://localhost:40080/mule"/>
<endpoint-identifier name="Bank5" value="axis:http://localhost:50080/mule"/>
</endpoint-identifiers>

But keep in mind that a SwiftMQ JNDI alias also decouples a queue from its physical location. I can move a queue to another router without affecting clients. So it's always recommended to avoid physical queue names.

Show
Andreas Mueller added a comment - Yes, that works too: <endpoint-identifiers> <endpoint-identifier name="LoanBrokerRequestsREST" value="jetty:rest://localhost:8080/loanbroker"/> <endpoint-identifier name="LoanBrokerRequests" value="vm://loan.broker.requests"/> <endpoint-identifier name="LoanQuotes" value="jms://esb_loan_quotes%40router1"/> <endpoint-identifier name="CreditAgencyGateway" value="jms://esb_credit_agency%40router1"/> <!-- here we're telling Mule to invoke a remote Ejb directly (not host a proxy service for the remote object as with the other example in mule-config-with-ejb-container.xml example) --> <endpoint-identifier name="CreditAgency" value="ejb://localhost:1099/local/CreditAgency?method=getCreditProfile"/> <endpoint-identifier name="LenderGateway" value="jms://esb_lender_service%40router1"/> <endpoint-identifier name="LenderService" value="vm://lender.service"/> <endpoint-identifier name="BankingGateway" value="jms://esb_banks%40router1"/> <endpoint-identifier name="Bank1" value="axis:http://localhost:10080/mule"/> <endpoint-identifier name="Bank2" value="axis:http://localhost:20080/mule"/> <endpoint-identifier name="Bank3" value="axis:http://localhost:30080/mule"/> <endpoint-identifier name="Bank4" value="axis:http://localhost:40080/mule"/> <endpoint-identifier name="Bank5" value="axis:http://localhost:50080/mule"/> </endpoint-identifiers> But keep in mind that a SwiftMQ JNDI alias also decouples a queue from its physical location. I can move a queue to another router without affecting clients. So it's always recommended to avoid physical queue names.

People

Vote (0)
Watch (1)

Dates

  • Created:
    Updated:
    Resolved: