[Design of Messaging on JBoss (Messaging/JBoss)] - Re: Grouping of messages with JMSXGroupId(JBMESSAGING-375)
by hegsti
I have attached a patch for MessageGroupRouting (JBMESSAGING-375) in JIRA.
The patch contains the new Router, some tests, a temporary modification of PagingFilteredQueue.java ( to enable the new Router), and some modifications to the RoundRobinPointToPointRouter to extend it.
This should NOT be considered as a final patch, but it should be enough to demonstrate a working solution I can improve and complete based on feedback.
There are two minor things left (which I'm currently aware of :) ).
1)A way to enable the router by configuration, so that the PagingFilteredQueue can create a router based on this configuration.
Maybe a mbean attribute on the queue configuration <consumer-routing-policy>message-group-routing</consumer-routing-policy> or something ?
2) I should also try to make the algorithm more readable and avoid some code duplication.
I have done some testing to simulate different scenarios where receivers are closing and client side buffers gets full. But there may be scenarios I have not thought about :).
Stian
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4054317#4054317
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4054317
18 years, 9 months
[Design of Messaging on JBoss (Messaging/JBoss)] - Messaging client dependencies
by sergeypk
When trying to run an example that accesses messaging from outside of JBoss AS, I have found that the code needs to access org.jboss.aop.DynamicStrategy class at runtime, but the class is not included in jboss-aop-jdk50-client.jar, only in the full jar which is also located in some obscure place (deploy/jboss-aop-jdk50.deployer). Not sure if this is a problem or not, but I thought you should know.
Here is a stack trace of a ClassNotFoundException thrown when trying to look up a connection factory through JNDI:
Exception in thread "Consumer Thread" java.lang.NoClassDefFoundError: org/jboss/aop/DynamicAOPStrategy
| at org.jboss.jms.client.delegate.ClientConnectionFactoryDelegate.<clinit>(ClientConnectionFactoryDelegate.java)
| at sun.misc.Unsafe.ensureClassInitialized(Native Method)
| at sun.reflect.UnsafeFieldAccessorFactory.newFieldAccessor(UnsafeFieldAccessorFactory.java:25)
| at sun.reflect.ReflectionFactory.newFieldAccessor(ReflectionFactory.java:122)
| at java.lang.reflect.Field.acquireFieldAccessor(Field.java:918)
| at java.lang.reflect.Field.getFieldAccessor(Field.java:899)
| at java.lang.reflect.Field.getLong(Field.java:528)
| at java.io.ObjectStreamClass.getDeclaredSUID(ObjectStreamClass.java:1614)
| at java.io.ObjectStreamClass.access$700(ObjectStreamClass.java:52)
| at java.io.ObjectStreamClass$2.run(ObjectStreamClass.java:425)
| at java.security.AccessController.doPrivileged(Native Method)
| at java.io.ObjectStreamClass.<init>(ObjectStreamClass.java:413)
| at java.io.ObjectStreamClass.lookup(ObjectStreamClass.java:310)
| at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:547)
| at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1583)
| at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1496)
| at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1732)
| at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
| at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1945)
| at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1869)
| at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
| at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
| at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
| at java.rmi.MarshalledObject.get(MarshalledObject.java:142)
| at org.jnp.interfaces.MarshalledValuePair.get(MarshalledValuePair.java:72)
| at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:652)
| at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:587)
| at javax.naming.InitialContext.lookup(InitialContext.java:392)
| at it.infoblu.acq.lib.jbhang.QueueMsgConsumer.setup(QueueMsgConsumer.java:56)
| at it.infoblu.acq.lib.jbhang.ConsumerService.run(ConsumerService.java:39)
| at java.lang.Thread.run(Thread.java:619)
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4054245#4054245
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4054245
18 years, 9 months