You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@qpid.apache.org by "Keith Wall (JIRA)" <ji...@apache.org> on 2014/07/19 15:40:38 UTC

[jira] [Commented] (QPID-5906) Creating consumer with Rabbit fails unless IMMEDIATE_PREFETCH is set

    [ https://issues.apache.org/jira/browse/QPID-5906?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14067520#comment-14067520 ] 

Keith Wall commented on QPID-5906:
----------------------------------

http://www.rabbitmq.com/specification.html states that:

{quote}
partial	channel.flow	active=false is not supported by the server. Limiting prefetch with basic.qos provides much better control.
{quote}



> Creating consumer with Rabbit fails unless IMMEDIATE_PREFETCH is set
> --------------------------------------------------------------------
>
>                 Key: QPID-5906
>                 URL: https://issues.apache.org/jira/browse/QPID-5906
>             Project: Qpid
>          Issue Type: Bug
>          Components: Java Client
>         Environment: Rabbit 3.3.4
> Qpid Client 0.29
>            Reporter: Keith Wall
>
> I've noticed that if I try to use the Qpid Client (testing with 0.29) to create a Consumer with Rabbit, creating the consumer fails unless I set the IMMEDIATE_PREFETCH system property.   Specifically, the Rabbit server is returning a NOT_IMPLEMENTED - active=false [error code 540: not implemented] in response to the channel.flow active=false.
> {noformat}
> com.intellij.rt.execution.application.AppMain org.apache.qpid.example.Hello
> 2014-07-19 14:32:34,203 ERROR [IoReceiver - /10.211.55.13:5672] [AMQConnection] Throwable Received but no listener set: org.apache.qpid.AMQConnectionClosedException: Error: NOT_IMPLEMENTED - active=false [error code 540: not implemented]
> javax.jms.JMSException: Error registering consumer: org.apache.qpid.AMQConnectionClosedException: Error: NOT_IMPLEMENTED - active=false [error code 540: not implemented]
> 	at org.apache.qpid.client.AMQSession.toJMSException(AMQSession.java:3504)
> 	at org.apache.qpid.client.AMQSession$4.execute(AMQSession.java:2043)
> 	at org.apache.qpid.client.AMQSession$4.execute(AMQSession.java:1995)
> 	at org.apache.qpid.client.AMQConnectionDelegate_8_0.executeRetrySupport(AMQConnectionDelegate_8_0.java:333)
> 	at org.apache.qpid.client.AMQConnection.executeRetrySupport(AMQConnection.java:625)
> 	at org.apache.qpid.client.failover.FailoverRetrySupport.execute(FailoverRetrySupport.java:102)
> 	at org.apache.qpid.client.AMQSession.createConsumerImpl(AMQSession.java:1993)
> 	at org.apache.qpid.client.AMQSession.createConsumer(AMQSession.java:942)
> 	at org.apache.qpid.example.Hello.runTest(Hello.java:58)
> 	at org.apache.qpid.example.Hello.main(Hello.java:40)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> 	at java.lang.reflect.Method.invoke(Method.java:606)
> 	at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)
> Caused by: org.apache.qpid.AMQConnectionClosedException: Error: NOT_IMPLEMENTED - active=false [error code 540: not implemented]
> 	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
> 	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
> 	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
> 	at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
> 	at org.apache.qpid.AMQException.cloneForCurrentThread(AMQException.java:134)
> 	at org.apache.qpid.client.protocol.AMQProtocolHandler.writeCommandFrameAndWaitForReply(AMQProtocolHandler.java:682)
> 	at org.apache.qpid.client.protocol.AMQProtocolHandler.syncWrite(AMQProtocolHandler.java:719)
> 	at org.apache.qpid.client.protocol.AMQProtocolHandler.syncWrite(AMQProtocolHandler.java:713)
> 	at org.apache.qpid.client.AMQSession_0_8.sendConsume(AMQSession_0_8.java:465)
> 	at org.apache.qpid.client.AMQSession_0_8.sendConsume(AMQSession_0_8.java:62)
> 	at org.apache.qpid.client.AMQSession.consumeFromQueue(AMQSession.java:2589)
> 	at org.apache.qpid.client.AMQSession.registerConsumer(AMQSession.java:2924)
> 	at org.apache.qpid.client.AMQSession.access$400(AMQSession.java:98)
> 	at org.apache.qpid.client.AMQSession$4.execute(AMQSession.java:2020)
> 	... 13 more
> {noformat}
> On the Rabbit side I see:
> {noformat}
> =ERROR REPORT==== 19-Jul-2014::14:32:33 ===
> AMQP connection <0.884.0> (running), channel 1 - error:
> {amqp_error,not_implemented,"active=false",'channel.flow'}
> =INFO REPORT==== 19-Jul-2014::14:32:33 ===
> closing AMQP connection <0.884.0> (10.211.55.2:61875 -> 10.211.55.13:5672)
> {noformat}
> Setting IMMEDIATE_PREFETCH prevents the client from producing the channel.flow and this allows the consumer to be created properly and messages to flow.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@qpid.apache.org
For additional commands, e-mail: dev-help@qpid.apache.org