2013-11-20 4 views
0

SEE UPDATERabbitMQ DeliveryTag всегда 1

Я RabbitMQ установлен на моей локальной машине и может стоять в очереди сообщений без каких-либо проблем.

Я использую одобренную RabbitMQ библиотеку .NET Client.

После удаления сообщения и успешного его обработки наш план состоял в том, чтобы подтвердить сообщение с помощью BasicAck и передать DeliveryTag. Это, похоже, не работает, поскольку все сообщения возвращаются в состояние готовности.

Посмотрите на значение DeliveryTag после BasicGet, он ВСЕГДА 1. Я уверен, что это неправильно, так как я могу передать этот тег на BasicAck и ожидать, что сообщение будет уникально идентифицировано.

Что я делаю неправильно? DeliveryTag должна быть уникальной ссылкой, а не «1» да?

UPDATE

Я воссоздает CHANNEL каждый раз, так что вызов BasicGet и вызов BasicAck были на разных каналах. После того, как я повторно Канал обменивались сообщениями были успешно перемещены через Ready -> Uacked -> Офф Q.

FWIW DeliveryTag еще 1

Если кто-то хочет сказать мне, что я не должен быть реиспользование каналы, я думаю теперь это ответ. Я знаю о возможных многопоточных проблемах с повторным использованием каналов.

Благодаря

Pat

+0

использовать авто-Ack ли? – pinepain

+0

Фактически, доставка-тег = 1 означает «до и включительно» (см. Http://www.rabbitmq.com/amqp-0-9-1reference.html#basic.ack.delivery-tag), так что в целом вы все еще может распознавать сообщения, но вся ситуация немного странная, может быть, ребята .NET предоставляют более подробную информацию? – pinepain

+0

Когда мы вызываем channel.BasicGet, я передаю false для noAck, поэтому я предполагаю, что это не «использовать auto-ack». Если мы вернемся, DeliveryTag все равно 1, но сообщения останутся в очереди. Глядя на документы, кажется, что multiple = 1 означает «до и в том числе», а не DeliverTag. http://www.rabbitmq.com/amqp-0-9-1-reference.html. Нужно ли мне Dequeue и BadsicAclk на одном канале и соединении? –

ответ

0

Я воссоздает канал каждый раз, так что вызов BasicGet и вызов BasicAck были на разных каналах. После того, как я повторно Канал обменивались сообщениями были успешно перемещены через Ready -> Uacked -> Офф Q.

FWIW DeliveryTag еще 1

Если кто-то хочет сказать мне, что я не должен быть реиспользование каналы, я думаю теперь это ответ. Я знаю о возможных многопоточных проблемах с повторным использованием каналов.

Благодаря

Pat

Смежные вопросы