Hi,

I am trying to integrate MB 2.1.0 with AS 5.1.0 in order to enable a sample
service deployed in App Server to be subscribed and receive messages from a
queue/topic registered in MB [1]. However when doing this there are
practical limitations in this scenario which makes it not useful to
integrate MB with App Server.

As WSO2 MB currently do not have dynamic Queues/Topics support, it can't
dynamically create destinations when they are not defined in the JNDI
Initial Context. Once the JMS transport is enabled in App Server it tries
to create a JMS Queue for each deployed service in AS at the start up. As
there are no jms queues defined in jndi.properties file for these start up
services (except for the sample service which we going to use with MB) App
Server fails to start in this case and loops the following error in the
console.

[2013-06-19 12:49:39,965]  INFO
{org.apache.axis2.transport.jms.ServiceTaskManager} -  Task manager for
service : JavaScriptStubGeneratorService [re-]initialized
[2013-06-19 12:49:39,985]  WARN {org.apache.axis2.transport.jms.JMSUtils}
-  Cannot locate destination : JavaScriptStubGeneratorService
[2013-06-19 12:49:39,993] ERROR
{org.apache.axis2.transport.base.threads.NativeWorkerPool} -  Uncaught
exception
java.lang.UnsupportedOperationException: The new addressing based sytanx is
not supported for AMQP 0-8/0-9 versions
    at
org.wso2.andes.client.AMQSession_0_8.handleAddressBasedDestination(AMQSession_0_8.java:572)
    at
org.wso2.andes.client.AMQSession.registerConsumer(AMQSession.java:2838)
    at org.wso2.andes.client.AMQSession.access$500(AMQSession.java:117)
    at org.wso2.andes.client.AMQSession$4.execute(AMQSession.java:2031)
    at org.wso2.andes.client.AMQSession$4.execute(AMQSession.java:1997)
    at
org.wso2.andes.client.AMQConnectionDelegate_8_0.executeRetrySupport(AMQConnectionDelegate_8_0.java:305)
    at
org.wso2.andes.client.AMQConnection.executeRetrySupport(AMQConnection.java:621)
    at
org.wso2.andes.client.failover.FailoverRetrySupport.execute(FailoverRetrySupport.java:102)
    at
org.wso2.andes.client.AMQSession.createConsumerImpl(AMQSession.java:1995)
    at org.wso2.andes.client.AMQSession.createConsumer(AMQSession.java:993)
    at
org.apache.axis2.transport.jms.JMSUtils.createConsumer(JMSUtils.java:642)
    at
org.apache.axis2.transport.jms.ServiceTaskManager$MessageListenerTask.createConsumer(ServiceTaskManager.java:871)
    at
org.apache.axis2.transport.jms.ServiceTaskManager$MessageListenerTask.getMessageConsumer(ServiceTaskManager.java:741)
    at
org.apache.axis2.transport.jms.ServiceTaskManager$MessageListenerTask.receiveMessage(ServiceTaskManager.java:498)
    at
org.apache.axis2.transport.jms.ServiceTaskManager$MessageListenerTask.run(ServiceTaskManager.java:420)
    at
org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172)
    at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:662)



Therefore if we are going to integrate MB into AS need to do one of the
below two configuration options.

1. Go through all other deployed services in AS and modify the services.xml
file in order to only listen via http,https transports.
2. Go through all other deployed services in AS and add a corresponding
queue name to jndi.properties file with each service name.

Any option of this two is not feasible and not acceptable in user's
perspective as well as AS server will fail immediately if there is new
service is deployed on the run. Is there any way whether we can only enable
the JMS transport for a selected service only?

In side note Apache ActiveMQ provides dynamic queue/topic support, [2]  so
AS starts fine with ActiveMQ while ActiveMQ creates a queue in the broker
for each deployed service in AS. Hence as a workaround this can be get
worked if MB adds dynamic queue support, however the correct solution would
be add a configuration to enable/disable JMS transport in services, as it
is done in ESB proxy services.

Thanks!
Ishara

 [1] https://wso2.org/jira/browse/MB-238
 [2] http://activemq.apache.org/how-do-i-create-new-destinations.html

-- 
Ishara Premasada
Software Engineer,
WSO2 Inc. http://wso2.com/
*Blog   :  http://isharapremadasa.blogspot.com/
Twitter       :  https://twitter.com/ishadil
Mobile       : +94 714445832*
_______________________________________________
Architecture mailing list
[email protected]
https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture

Reply via email to