activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jim Gomes (JIRA)" <jira+amq...@apache.org>
Subject [jira] Work started: (AMQNET-153) Acknowledgment of Messages consumed from VirtualTopic consumer queues fails
Date Tue, 07 Apr 2009 23:11:35 GMT

     [ https://issues.apache.org/activemq/browse/AMQNET-153?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Work on AMQNET-153 started by Jim Gomes.

>  Acknowledgment of Messages consumed from VirtualTopic consumer queues fails
> ----------------------------------------------------------------------------
>
>                 Key: AMQNET-153
>                 URL: https://issues.apache.org/activemq/browse/AMQNET-153
>             Project: ActiveMQ .Net
>          Issue Type: Bug
>          Components: ActiveMQ Client
>    Affects Versions: 1.1
>         Environment: windows xp 64 ,java1.6 ,Activemq 5.2 NMS1.1 vs2008
>            Reporter: xinfang.yuan
>            Assignee: Jim Gomes
>            Priority: Blocker
>             Fix For: 1.1
>
>
> i try to test virtual  topic  found out the isssue
> 1.create cosumer.a.virtualtopic.test queue.
> 2.create cosumer.b.virtualtopic.test queue.
> 3.create  virtualtopic.test queue
> 4.send message into topic
> 5 consumer the message and uses the ClientAcknowledge submit the message.  occurred the
error
>    ---msga.Acknowledge(); 
> the mesga can't submit , i go to NMS source look at the code. and debug the information.
 i found out the if we uses clientacknowledge to submit the message ,it will create the MessageAck
, the MessageAck's info from info class and message class
> in MessageConsumer Class
> protected virtual MessageAck CreateMessageAck(Message message)
> 		{
> 			MessageAck ack = new MessageAck();
> 			ack.AckType = (int) AckType.ConsumedAck;
> 			ack.ConsumerId = info.ConsumerId;
> 			ack.Destination = message.Destination;
> 			ack.FirstMessageId = message.MessageId;
> 			ack.LastMessageId = message.MessageId;
> 			ack.MessageCount = 1;
> 			if(session.Transacted)
> 			{
> 				session.DoStartTransaction();
> 				ack.TransactionId = session.TransactionContext.TransactionId;
> 				session.TransactionContext.AddSynchronization(
> 						new MessageConsumerSynchronization(this, message));
> 			}
> 			return ack;
> 		}
> in there i can saw the  message.Destination = topic:\\virtualtopic.test , if i change
the Destination to queue:\\Consumer.a.Virtualtopic.test . and continue running the program
,it works . but i think the problem not here. 
> i think the problem in the running the Acknowledge between Broker and Client 
> NMS-------------------running Command-------VirtualTopic.test--------------------->Consumer.A.virtualTopic.test
> i guess the problem maybe in command . because i uses the java client to test it . everything
is works.
> other information for Message and Command
> Tracer.Debug("Sending Ack: "+ ack);
> ack =
> {MessageAck[ Destination=topic://VirtualTopic.test TransactionId= ConsumerId=ConsumerId[
ConnectionId=1a8ceea3-e808-473a-98a6-e08906181f64 SessionId=1 Value=1 ] AckType=2 FirstMessageId=MessageId[
ProducerId=ProducerId[ ConnectionId=a84996ea-6e8d-475e-bae1-25eee46b482f Value=1 SessionId=1
] ProducerSequenceId=1 BrokerSequenceId=8 ] LastMessageId=MessageId[ ProducerId=ProducerId[
ConnectionId=a84996ea-6e8d-475e-bae1-25eee46b482f Value=1 SessionId=1 ] ProducerSequenceId=1
BrokerSequenceId=8 ] MessageCount=1 ]}
> transport.Oneway(command);
> command=
> {MessageAck[ Destination=topic://VirtualTopic.test TransactionId= ConsumerId=ConsumerId[
ConnectionId=1a8ceea3-e808-473a-98a6-e08906181f64 SessionId=1 Value=1 ] AckType=2 FirstMessageId=MessageId[
ProducerId=ProducerId[ ConnectionId=a84996ea-6e8d-475e-bae1-25eee46b482f Value=1 SessionId=1
] ProducerSequenceId=1 BrokerSequenceId=8 ] LastMessageId=MessageId[ ProducerId=ProducerId[
ConnectionId=a84996ea-6e8d-475e-bae1-25eee46b482f Value=1 SessionId=1 ] ProducerSequenceId=1
BrokerSequenceId=8 ] MessageCount=1 ]}\
> 2009-03-23 10:30:26,132 [/127.0.0.1:4352] ERROR Service                        - Async
error occurred: java.lang.IllegalArgumentException: The subscription does not exist: 23f5c4b1-511f-4336-a0ce-d428ae28574b:1:1
> java.lang.IllegalArgumentException: The subscription does not exist: 23f5c4b1-511f-4336-a0ce-d428ae28574b:1:1
> 	at org.apache.activemq.broker.region.AbstractRegion.acknowledge(AbstractRegion.java:364)
> 	at org.apache.activemq.broker.region.RegionBroker.acknowledge(RegionBroker.java:462)
> 	at org.apache.activemq.broker.TransactionBroker.acknowledge(TransactionBroker.java:194)
> 	at org.apache.activemq.broker.BrokerFilter.acknowledge(BrokerFilter.java:74)
> 	at org.apache.activemq.broker.BrokerFilter.acknowledge(BrokerFilter.java:74)
> 	at org.apache.activemq.broker.MutableBrokerFilter.acknowledge(MutableBrokerFilter.java:85)
> 	at org.apache.activemq.broker.TransportConnection.processMessageAck(TransportConnection.java:456)
> 	at org.apache.activemq.command.MessageAck.visit(MessageAck.java:205)
> 	at org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:305)
> 	at org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:179)
> 	at org.apache.activemq.transport.TransportFilter.onCommand(TransportFilter.java:68)
> 	at org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:143)
> 	at org.apache.activemq.transport.InactivityMonitor.onCommand(InactivityMonitor.java:206)
> 	at org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:84)
> 	at org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:203)
> 	at org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:185)
> 	at java.lang.Thread.run(Thread.java:619)
>                                                                                     
          

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message