[ https://issues.apache.org/jira/browse/ARTEMIS-1457?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Michal Toth closed ARTEMIS-1457. -------------------------------- Resolution: Fixed Fix Version/s: 2.4.0 > Diverts are not working with Openwire protocol > ---------------------------------------------- > > Key: ARTEMIS-1457 > URL: https://issues.apache.org/jira/browse/ARTEMIS-1457 > Project: ActiveMQ Artemis > Issue Type: Bug > Components: Broker, OpenWire > Affects Versions: 2.3.0 > Environment: Diverts exclusive/non-exclusive > Openwire clients > Reporter: Michal Toth > Fix For: 2.4.0 > > > Both type of diverts are not working with OpenWire protocol. > Broker stacktrace error > {noformat} > 12:58:10,848 WARN > [org.apache.activemq.artemis.core.protocol.openwire.amq.AMQSession] Cannot > publish to a non-existent Destination: queue://testDivert: > javax.jms.InvalidDestinationException: Cannot publish to a non-existent > Destination: queue://testDivert > at > org.apache.activemq.artemis.core.protocol.openwire.amq.AMQSession.lambda$send$0(AMQSession.java:360) > [artemis-openwire-protocol-2.0.0.amq-700013-redhat-1.jar:] > at > org.apache.activemq.artemis.core.paging.impl.PagingStoreImpl.checkMemory(PagingStoreImpl.java:696) > [artemis-server-2.0.0.amq-700013-redhat-1.jar:2.0.0.amq-700013-redhat-1] > at > org.apache.activemq.artemis.core.protocol.openwire.amq.AMQSession.send(AMQSession.java:353) > [artemis-openwire-protocol-2.0.0.amq-700013-redhat-1.jar:] > at > org.apache.activemq.artemis.core.protocol.openwire.OpenWireConnection$CommandProcessor.processMessage(OpenWireConnection.java:1366) > [artemis-openwire-protocol-2.0.0.amq-700013-redhat-1.jar:] > at > org.apache.activemq.command.ActiveMQMessage.visit(ActiveMQMessage.java:768) > [activemq-client-5.11.0.redhat-630283.jar:5.11.0.redhat-630283] > at > org.apache.activemq.artemis.core.protocol.openwire.OpenWireConnection.bufferReceived(OpenWireConnection.java:271) > [artemis-openwire-protocol-2.0.0.amq-700013-redhat-1.jar:] > at > org.apache.activemq.artemis.core.remoting.server.impl.RemotingServiceImpl$DelegatingBufferHandler.bufferReceived(RemotingServiceImpl.java:628) > [artemis-server-2.0.0.amq-700013-redhat-1.jar:2.0.0.amq-700013-redhat-1] > at > org.apache.activemq.artemis.core.remoting.impl.netty.ActiveMQChannelHandler.channelRead(ActiveMQChannelHandler.java:69) > [artemis-core-client-2.0.0.amq-700013-redhat-1.jar:2.0.0.amq-700013-redhat-1] > at > io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) > [netty-all-4.1.9.Final-redhat-2.jar:4.1.9.Final-redhat-2] > at > io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) > [netty-all-4.1.9.Final-redhat-2.jar:4.1.9.Final-redhat-2] > at > io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340) > [netty-all-4.1.9.Final-redhat-2.jar:4.1.9.Final-redhat-2] > at > io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:293) > [netty-all-4.1.9.Final-redhat-2.jar:4.1.9.Final-redhat-2] > at > io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:267) > [netty-all-4.1.9.Final-redhat-2.jar:4.1.9.Final-redhat-2] > at > io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) > [netty-all-4.1.9.Final-redhat-2.jar:4.1.9.Final-redhat-2] > at > io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) > [netty-all-4.1.9.Final-redhat-2.jar:4.1.9.Final-redhat-2] > at > io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340) > [netty-all-4.1.9.Final-redhat-2.jar:4.1.9.Final-redhat-2] > at > io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1334) > [netty-all-4.1.9.Final-redhat-2.jar:4.1.9.Final-redhat-2] > at > io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) > [netty-all-4.1.9.Final-redhat-2.jar:4.1.9.Final-redhat-2] > at > io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) > [netty-all-4.1.9.Final-redhat-2.jar:4.1.9.Final-redhat-2] > at > io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:926) > [netty-all-4.1.9.Final-redhat-2.jar:4.1.9.Final-redhat-2] > at > io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:1017) > [netty-all-4.1.9.Final-redhat-2.jar:4.1.9.Final-redhat-2] > at > io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:394) > [netty-all-4.1.9.Final-redhat-2.jar:4.1.9.Final-redhat-2] > at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:299) > [netty-all-4.1.9.Final-redhat-2.jar:4.1.9.Final-redhat-2] > at > io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:858) > [netty-all-4.1.9.Final-redhat-2.jar:4.1.9.Final-redhat-2] > at java.lang.Thread.run(Thread.java:748) [rt.jar:1.8.0_141] > 12:58:11,189 WARN [org.apache.activemq.artemis.core.server] AMQ222061: > Client connection failed, clearing up resources for session > e7c0cd3c-ada9-11e7-8016-525400061be7 > 12:58:11,190 WARN [org.apache.activemq.artemis.core.server] AMQ222107: > Cleared up resources for session e7c0cd3c-ada9-11e7-8016-525400061be7 > 12:58:11,190 WARN [org.apache.activemq.artemis.core.server] AMQ222061: > Client connection failed, clearing up resources for session > ID:dhcp-145-96.lab.eng.brq.redhat.com-33090-1507633090593-1:1:-1 > 12:58:11,191 WARN [org.apache.activemq.artemis.core.server] AMQ222107: > Cleared up resources for session > ID:dhcp-145-96.lab.eng.brq.redhat.com-33090-1507633090593-1:1:-1 > 12:58:11,214 WARN [org.apache.activemq.artemis.core.server] AMQ222061: > Client connection failed, clearing up resources for session > ID:dhcp-145-96.lab.eng.brq.redhat.com-33090-1507633090593-1:1:1 > 12:58:11,214 WARN [org.apache.activemq.artemis.core.server] AMQ222107: > Cleared up resources for session > ID:dhcp-145-96.lab.eng.brq.redhat.com-33090-1507633090593-1:1:1 > {noformat} > Client error > {noformat} > $ java -jar /var/dtests/node_data/clients/aoc7.jar sender --log-msgs dict > --broker <broker>:61616 --conn-username admin --conn-password admin --address > testDivert --count 1 > 12:55:27,010 ERROR Error while sending a message! > javax.jms.InvalidDestinationException: Cannot publish to a non-existent > Destination: queue://testDivert > at > org.apache.activemq.artemis.core.protocol.openwire.amq.AMQSession.lambda$send$0(AMQSession.java:360) > at > org.apache.activemq.artemis.core.paging.impl.PagingStoreImpl.checkMemory(PagingStoreImpl.java:696) > at > org.apache.activemq.artemis.core.protocol.openwire.amq.AMQSession.send(AMQSession.java:353) > at > org.apache.activemq.artemis.core.protocol.openwire.OpenWireConnection$CommandProcessor.processMessage(OpenWireConnection.java:1366) > at > org.apache.activemq.command.ActiveMQMessage.visit(ActiveMQMessage.java:768) > at > org.apache.activemq.artemis.core.protocol.openwire.OpenWireConnection.bufferReceived(OpenWireConnection.java:271) > at > org.apache.activemq.artemis.core.remoting.server.impl.RemotingServiceImpl$DelegatingBufferHandler.bufferReceived(RemotingServiceImpl.java:628) > at > org.apache.activemq.artemis.core.remoting.impl.netty.ActiveMQChannelHandler.channelRead(ActiveMQChannelHandler.java:69) > at > io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) > at > io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) > at > io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340) > at > io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:293) > at > io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:267) > at > io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) > at > io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) > at > io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340) > at > io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1334) > at > io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) > at > io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) > at > io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:926) > at > io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:1017) > at > io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:394) > at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:299) > at > io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:858) > at java.lang.Thread.run(Thread.java:748) > {noformat} > {code:xml} > <configuration xmlns="urn:activemq" > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > xsi:schemaLocation="urn:activemq > /schema/artemis-configuration.xsd"> > <core xmlns="urn:activemq:core" > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > xsi:schemaLocation="urn:activemq:core "> > <name>amq</name> > <persistence-enabled>true</persistence-enabled> > <!-- this could be ASYNCIO or NIO > --> > <journal-type>ASYNCIO</journal-type> > <paging-directory>./data/paging</paging-directory> > <bindings-directory>./data/bindings</bindings-directory> > <journal-directory>./data/journal</journal-directory> > > <large-messages-directory>./data/large-messages</large-messages-directory> > <journal-datasync>true</journal-datasync> > <journal-min-files>2</journal-min-files> > <journal-pool-files>-1</journal-pool-files> > <!-- > You can verify the network health of a particular NIC by specifying > the <network-check-NIC> element. > <network-check-NIC>theNicName</network-check-NIC> > --> > <!-- > Use this to use an HTTP server to validate the network > > <network-check-URL-list>http://www.apache.org</network-check-URL-list> --> > <!-- <network-check-period>10000</network-check-period> --> > <!-- <network-check-timeout>1000</network-check-timeout> --> > <!-- this is a comma separated list, no spaces, just DNS or IPs > it should accept IPV6 > Warning: Make sure you understand your network topology as this is > meant to validate if your network is valid. > Using IPs that could eventually disappear or be partially > visible may defeat the purpose. > You can use a list of multiple IPs, and if any successful > ping will make the server OK to continue running --> > <!-- <network-check-list>10.0.0.1</network-check-list> --> > <!-- use this to customize the ping used for ipv4 addresses --> > <!-- <network-check-ping-command>ping -c 1 -t %d > %s</network-check-ping-command> --> > <!-- use this to customize the ping used for ipv6 addresses --> > <!-- <network-check-ping6-command>ping6 -c 1 > %2$s</network-check-ping6-command> --> > <!-- > This value was determined through a calculation. > Your system could perform 0.25 writes per millisecond > on the current journal configuration. > That translates as a sync write every 4020000 nanoseconds > --> > <journal-buffer-timeout>4020000</journal-buffer-timeout> > <!-- how often we are looking for how many bytes are being used on the > disk in ms --> > <disk-scan-period>5000</disk-scan-period> > <!-- once the disk hits this limit the system will block, or close the > connection in certain protocols > that won't support flow control. --> > <max-disk-usage>90</max-disk-usage> > <!-- the system will enter into page mode once you hit this limit. > This is an estimate in bytes of how much the messages are using in > memory --> > <global-max-size>100Mb</global-max-size> > <!-- should the broker detect dead locks and other issues --> > <critical-analyzer>true</critical-analyzer> > <critical-analyzer-timeout>120000</critical-analyzer-timeout> > <critical-analyzer-check-period>60000</critical-analyzer-check-period> > <critical-analyzer-policy>HALT</critical-analyzer-policy> > <diverts> > <divert name="test-divert"> > <!-- <routing-name>testDivert</routing-name> --> > <address>testDivert</address> > <forwarding-address>spyDivert</forwarding-address> > <exclusive>true</exclusive> > </divert> > </diverts> > <acceptors> > <!-- useEpoll means: it will use Netty epoll if you are on a system > (Linux) that supports it --> > <!-- amqpCredits: The number of credits sent to AMQP producers --> > <!-- amqpLowCredits: The server will send the # credits specified at > amqpCredits at this low mark --> > <!-- Acceptor for every supported protocol --> > <acceptor > name="artemis">tcp://0.0.0.0:61616?tcpSendBufferSize=1048576;tcpReceiveBufferSize=1048576;protocols=CORE,AMQP,STOMP,HORNETQ,MQTT,OPENWIRE;useEpoll=true;amqpCredits=1000;amqpLowCredits=300</acceptor> > <!-- AMQP Acceptor. Listens on default AMQP port for AMQP > traffic.--> > <acceptor > name="amqp">tcp://0.0.0.0:5672?tcpSendBufferSize=1048576;tcpReceiveBufferSize=1048576;protocols=AMQP;useEpoll=true;amqpCredits=1000;amqpMinCredits=300</acceptor> > <!-- STOMP Acceptor. --> > <acceptor > name="stomp">tcp://0.0.0.0:61613?tcpSendBufferSize=1048576;tcpReceiveBufferSize=1048576;protocols=STOMP;useEpoll=true</acceptor> > <!-- HornetQ Compatibility Acceptor. Enables HornetQ Core and STOMP > for legacy HornetQ clients. --> > <acceptor > name="hornetq">tcp://0.0.0.0:5445?protocols=HORNETQ,STOMP;useEpoll=true</acceptor> > <!-- MQTT Acceptor --> > <acceptor > name="mqtt">tcp://0.0.0.0:1883?tcpSendBufferSize=1048576;tcpReceiveBufferSize=1048576;protocols=MQTT;useEpoll=true</acceptor> > </acceptors> > <security-settings> > <security-setting match="#"> > <permission type="createNonDurableQueue" roles="amq"/> > <permission type="deleteNonDurableQueue" roles="amq"/> > <permission type="createDurableQueue" roles="amq"/> > <permission type="deleteDurableQueue" roles="amq"/> > <permission type="createAddress" roles="amq"/> > <permission type="deleteAddress" roles="amq"/> > <permission type="consume" roles="amq"/> > <permission type="browse" roles="amq"/> > <permission type="send" roles="amq"/> > <!-- we need this otherwise ./artemis data imp wouldn't work --> > <permission type="manage" roles="amq"/> > </security-setting> > </security-settings> > <address-settings> > <!-- if you define auto-create on certain queues, management has to > be auto-create --> > <address-setting match="activemq.management#"> > <dead-letter-address>DLQ</dead-letter-address> > <expiry-address>ExpiryQueue</expiry-address> > <redelivery-delay>0</redelivery-delay> > <!-- with -1 only the global-max-size is in use for limiting --> > <max-size-bytes>-1</max-size-bytes> > > <message-counter-history-day-limit>10</message-counter-history-day-limit> > <address-full-policy>PAGE</address-full-policy> > <auto-create-queues>true</auto-create-queues> > <auto-create-addresses>true</auto-create-addresses> > <auto-create-jms-queues>true</auto-create-jms-queues> > <auto-create-jms-topics>true</auto-create-jms-topics> > </address-setting> > <!--default for catch all--> > <address-setting match="#"> > <dead-letter-address>DLQ</dead-letter-address> > <expiry-address>ExpiryQueue</expiry-address> > <redelivery-delay>0</redelivery-delay> > <!-- with -1 only the global-max-size is in use for limiting --> > <max-size-bytes>-1</max-size-bytes> > > <message-counter-history-day-limit>10</message-counter-history-day-limit> > <address-full-policy>PAGE</address-full-policy> > <auto-create-queues>true</auto-create-queues> > <auto-create-addresses>true</auto-create-addresses> > <auto-create-jms-queues>true</auto-create-jms-queues> > <auto-create-jms-topics>true</auto-create-jms-topics> > </address-setting> > </address-settings> > <addresses> > <address name="testDivert"> > <anycast> > <queue name="testDivert"/> > </anycast> > </address> > <address name="spyDivert"> > <anycast> > <queue name="spyDivert"/> > </anycast> > </address> > <address name="DLQ"> > <anycast> > <queue name="DLQ" /> > </anycast> > </address> > <address name="ExpiryQueue"> > <anycast> > <queue name="ExpiryQueue" /> > </anycast> > </address> > </addresses> > </core> > </configuration> > {code} -- This message was sent by Atlassian JIRA (v6.4.14#64029)