activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Gary Tully <gary.tu...@gmail.com>
Subject Re: Network broker and filter predicate
Date Mon, 09 Nov 2009 10:31:39 GMT
Just a though, with the latest 5.3.0 release, the wireformat version
is 5. Enable debug logging to validate the wireformat negotiation
between the brokers to see what is the problem. Possibly there is some
mix up in the classpath or something.

2009/11/9 hackingbear <hackingbear@gmail.com>:
>
> Hi,
>
> In our setup, we have a backbone broker running the verbatim AMQ 5.3 and a
> 5.3 broker without our own BrokerFilter (gateway broker.) The gateway broker
> is for serving clients connecting from the Internet. One thing the broker
> does is to ensure only the right messages can be consumed, like:
>
>    public Subscription addConsumer(ConnectionContext context, ConsumerInfo
> info) throws Exception {
>            PropertyExpression filterProp = new
> PropertyExpression("FILTER_VALUE");
>            List<String> elements = Arrays.asList("A", "B", "C", "D");
>            BooleanExpression predicate =
> ComparisonExpression.createInFilter(filterProp, elements);
>            info.setAdditionalPredicate(predicate);
>
> The config file is currently very simple:
>
> <beans ...>
>  <bean
> class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
> />
>
>  <broker xmlns="http://activemq.apache.org/schema/core" brokerName="tsgw"
> plugins="#gatewayPlugin">
>
>    <networkConnectors>
>        <networkConnector uri="static:(tcp://localhost:61616)"
> duplex="true"/>
>    </networkConnectors>
>    <persistenceAdapter>
>      <memoryPersistenceAdapter />
>    </persistenceAdapter>
>
>    <transportConnectors>
>      <transportConnector uri="tcp://localhost:62002" />
>    </transportConnectors>
>
>  </broker>
>  <bean id="gatewayPlugin" class="amq.GatewayPlugin" />
> </beans>
>
> Then when the filter code runs, I will get an exception shown below, which
> also seems to throw the gateway broker in disarray as it keeps trying the
> same thing with same errors. If I comment out the setaddtionalPredicate(),
> the error goes away.
>
> Looking around the AMQ codes, the boolean/unary expressions indeed do not
> implement the DataStructure and this marshaller indeed is trying to cast to
> DataStructure. Further, SimpleAuthorizationBroker just instantiates a
> BooleanExpression.
>
> So I wonder if this has to do with network broker setup. How can I fix/work
> around this problem?
>
> Greatly appreciate for any help!!
>
> ----
>
>  WARN DemandForwardingBridge Caught an exception processing local command
> [@BrokerService] 2009-11-08 15:22:40,877
> java.lang.ClassCastException: org.apache.activemq.filter.UnaryExpression$2
> cannot be cast to org.apache.activemq.command.DataStructure
>        at
> org.apache.activemq.openwire.v3.ConsumerInfoMarshaller.tightMarshal1(ConsumerInfoMarshaller.java:127)
>        at
> org.apache.activemq.openwire.OpenWireFormat.tightMarshalNestedObject1(OpenWireFormat.java:397)
>        at
> org.apache.activemq.openwire.v3.BaseDataStreamMarshaller.tightMarshalNestedObject1(BaseDataStreamMarshaller.java:131)
>        at
> org.apache.activemq.openwire.v3.MessageMarshaller.tightMarshal1(MessageMarshaller.java:132)
>        at
> org.apache.activemq.openwire.v3.ActiveMQMessageMarshaller.tightMarshal1(ActiveMQMessageMarshaller.java:77)
>        at
> org.apache.activemq.openwire.OpenWireFormat.marshal(OpenWireFormat.java:228)
>        at
> org.apache.activemq.transport.tcp.TcpTransport.oneway(TcpTransport.java:166)
>        at
> org.apache.activemq.transport.InactivityMonitor.oneway(InactivityMonitor.java:233)
>        at
> org.apache.activemq.transport.TransportFilter.oneway(TransportFilter.java:83)
>        at
> org.apache.activemq.transport.WireFormatNegotiator.oneway(WireFormatNegotiator.java:100)
>        at
> org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:40)
>        at
> org.apache.activemq.transport.ResponseCorrelator.oneway(ResponseCorrelator.java:60)
>        at
> org.apache.activemq.network.DemandForwardingBridgeSupport.serviceLocalCommand(DemandForwardingBridgeSupport.java:647)
>        at
> org.apache.activemq.network.DemandForwardingBridgeSupport$1.onCommand(DemandForwardingBridgeSupport.java:147)
>        at
> org.apache.activemq.transport.ResponseCorrelator.onCommand(ResponseCorrelator.java:104)
>        at
> org.apache.activemq.transport.TransportFilter.onCommand(TransportFilter.java:68)
>        at
> org.apache.activemq.transport.vm.VMTransport.oneway(VMTransport.java:113)
>        at
> org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:40)
>        at
> org.apache.activemq.transport.ResponseCorrelator.oneway(ResponseCorrelator.java:60)
>        at
> org.apache.activemq.broker.TransportConnection.dispatch(TransportConnection.java:1207)
>        at
> org.apache.activemq.broker.TransportConnection.processDispatch(TransportConnection.java:793)
>        at
> org.apache.activemq.broker.TransportConnection.iterate(TransportConnection.java:830)
>        at
> org.apache.activemq.thread.PooledTaskRunner.runTask(PooledTaskRunner.java:122)
>        at
> org.apache.activemq.thread.PooledTaskRunner$1.run(PooledTaskRunner.java:43)
>        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:619)
>
> --
> View this message in context: http://old.nabble.com/Network-broker-and-filter-predicate-tp26259578p26259578.html
> Sent from the ActiveMQ - User mailing list archive at Nabble.com.
>
>



-- 
http://blog.garytully.com

Open Source Integration
http://fusesource.com

Mime
View raw message