0

私は非常に単純なシナリオを持っています。キューを作成し、交換し、キューを交換にバインドします。

Code :
String queueName = new StringBuilder("LP.DATA.").append("TESTACCOUNT").append(".").append("subLP").toString();
channel.exchangeDeclare(ExchangeConstants.DATA_EXCG, "direct", true);
channel.queueDeclare(queueName, true, false, false, null);
channel.exchangeBind(queueName, ExchangeConstants.DATA_EXCG, queueName);

I get the following error when exchangeBind() is called.

com.rabbitmq.client.ShutdownSignalException: channel error; reason: {#method<channel.close>(reply-code=404, reply-text=NOT_FOUND - no exchange 'LP.DATA.TESTACCOUNT.subLP' in vhost '/', class-id=40, method-id=30), null, ""}

My ExchangeConstants.DATA_EXCG is "DATA_EXCG". Using RabbitMq admin I see that the exchange and queue are all created. From the exception I don't understand why is it looking for exchange with name "LP.DATA.TESTACCOUNT.subLP", this is a queuename.  It seems quite trivial, I am sure I am missing something.

I am using java rabbitmq-client version 3.04. 
4

1 に答える 1

2
channel.exchangeBind(java.lang.String destination,
             java.lang.String source,
             java.lang.String routingKey)

この関数は 2 つの交換を結び付けます: 宛先と送信元は両方とも交換であると想定されます。

https://www.rabbitmq.com/releases/rabbitmq-java-client/v3.0.4/rabbitmq-java-client-javadoc-3.0.4/com/rabbitmq/client/Channel.html#exchangeBind(java.lang.文字列,java.lang.文字列,java.lang.文字列)

ここでは、代わりに使用する必要がありますchannel.queueBind

于 2013-05-21T05:38:33.747 に答える