ScalaConsultants / reactive-rabbit

Reactive Streams driver for AMQP protocol. Powered by RabbitMQ library.
Apache License 2.0
184 stars 40 forks source link

Can you publish a new version ? #46

Closed pocman closed 8 years ago

pocman commented 8 years ago

I currently have this issue : https://groups.google.com/forum/#!topic/rabbitmq-users/c76nrrSWgs8 https://github.com/rabbitmq/rabbitmq-java-client/issues/129

I was fixed in rabbitmq-java-client 3.6.1 Could you please push a new jar to maven repo ?

Thanks !

pocman commented 8 years ago

I try overrding the client version, and I still have my issue : QueuePublisher seems to have a bug during recovery.

com.rabbitmq.client.TopologyRecoveryException: Caught an exception while recovering queue transporter.states: channel is already closed due to clean channel shutdown; protocol method: #method<channel.close>(reply-code=200, reply-text=OK, class-id=0, method-id=0)
        at com.rabbitmq.client.impl.recovery.AutorecoveringConnection.recoverQueues(AutorecoveringConnection.java:571)
        at com.rabbitmq.client.impl.recovery.AutorecoveringConnection.recoverEntities(AutorecoveringConnection.java:523)
        at com.rabbitmq.client.impl.recovery.AutorecoveringConnection.beginAutomaticRecovery(AutorecoveringConnection.java:451)
        at com.rabbitmq.client.impl.recovery.AutorecoveringConnection.access$000(AutorecoveringConnection.java:53)
        at com.rabbitmq.client.impl.recovery.AutorecoveringConnection$1.shutdownCompleted(AutorecoveringConnection.java:383)
        at com.rabbitmq.client.impl.ShutdownNotifierComponent.notifyListeners(ShutdownNotifierComponent.java:75)
        at com.rabbitmq.client.impl.AMQConnection$MainLoop.run(AMQConnection.java:578)
        at java.lang.Thread.run(Thread.java:745)
Caused by: com.rabbitmq.client.AlreadyClosedException: channel is already closed due to clean channel shutdown; protocol method: #method<channel.close>(reply-code=200, reply-text=OK, class-id=0, method-id=0)
        at com.rabbitmq.client.impl.AMQChannel.ensureIsOpen(AMQChannel.java:195)
        at com.rabbitmq.client.impl.AMQChannel.rpc(AMQChannel.java:241)
        at com.rabbitmq.client.impl.AMQChannel.privateRpc(AMQChannel.java:219)
        at com.rabbitmq.client.impl.AMQChannel.exnWrappingRpc(AMQChannel.java:118)
        at com.rabbitmq.client.impl.ChannelN.queueDeclare(ChannelN.java:844)
        at com.rabbitmq.client.impl.recovery.AutorecoveringChannel.queueDeclare(AutorecoveringChannel.java:266)
        at com.rabbitmq.client.impl.recovery.RecordedQueue.recover(RecordedQueue.java:38)
        at com.rabbitmq.client.impl.recovery.AutorecoveringConnection.recoverQueues(AutorecoveringConnection.java:549)
        ... 7 more
mkiedys commented 8 years ago

Can you explain in more detail how I can replicate this error?

mkiedys commented 8 years ago

Version 1.1.1 released to Maven Central.

pocman commented 8 years ago

To replicate, run: Source.fromPublisher(Connection().consume(queue = queue)).runWith(Sink.ignore) with application.conf :

amqp {
  heartbeat = 2s
  automatic-recovery = true
  recovery-interval = 2s
}

Kill rabbitmq-server and restart. I will raise :

Caught an exception when recovering topology Caught an exception while recovering queue admin.assignments: channel is already closed due to clean channel shutdown; protocol method: #method<channel.close>(reply-code=200, reply-text=OK, class-id=0, method-id=0)
com.rabbitmq.client.TopologyRecoveryException: Caught an exception while recovering queue admin.assignments: channel is already closed due to clean channel shutdown; protocol method: #method<channel.close>(reply-code=200, reply-text=OK, class-id=0, method-id=0)
        at com.rabbitmq.client.impl.recovery.AutorecoveringConnection.recoverQueues(AutorecoveringConnection.java:571)
        at com.rabbitmq.client.impl.recovery.AutorecoveringConnection.recoverEntities(AutorecoveringConnection.java:523)
        at com.rabbitmq.client.impl.recovery.AutorecoveringConnection.beginAutomaticRecovery(AutorecoveringConnection.java:451)
        at com.rabbitmq.client.impl.recovery.AutorecoveringConnection.access$000(AutorecoveringConnection.java:53)
        at com.rabbitmq.client.impl.recovery.AutorecoveringConnection$1.shutdownCompleted(AutorecoveringConnection.java:383)
        at com.rabbitmq.client.impl.ShutdownNotifierComponent.notifyListeners(ShutdownNotifierComponent.java:75)
        at com.rabbitmq.client.impl.AMQConnection$MainLoop.run(AMQConnection.java:578)
        at java.lang.Thread.run(Thread.java:745)
Caused by: com.rabbitmq.client.AlreadyClosedException: channel is already closed due to clean channel shutdown; protocol method: #method<channel.close>(reply-code=200, reply-text=OK, class-id=0, method-id=0)
        at com.rabbitmq.client.impl.AMQChannel.ensureIsOpen(AMQChannel.java:195)
        at com.rabbitmq.client.impl.AMQChannel.rpc(AMQChannel.java:241)
        at com.rabbitmq.client.impl.AMQChannel.privateRpc(AMQChannel.java:219)
        at com.rabbitmq.client.impl.AMQChannel.exnWrappingRpc(AMQChannel.java:118)
        at com.rabbitmq.client.impl.ChannelN.queueDeclare(ChannelN.java:844)
        at com.rabbitmq.client.impl.recovery.AutorecoveringChannel.queueDeclare(AutorecoveringChannel.java:266)
        at com.rabbitmq.client.impl.recovery.RecordedQueue.recover(RecordedQueue.java:38)
        at com.rabbitmq.client.impl.recovery.AutorecoveringConnection.recoverQueues(AutorecoveringConnection.java:549)
        ... 7 more