basic.consume
を使用してキューに登録している単純なパブリッシャとコンシューマを作成しました。RabbitMqからのメッセージの受信を確認しない
私の消費者は、ジョブが例外なく実行されたときにメッセージを確認します。私が例外に遭遇するたびに、私はメッセージを確認せずに早く帰ります。確認応答されたメッセージだけがキューから消え、正常に動作します。
ここで、失敗したメッセージを再度消費者に送ってもらいたいのですが、そのメッセージを再確認する唯一の方法は、コンシューマを再起動することです。
このユースケースにどのようにアプローチする必要がありますか?
セットアップコード
$channel = new AMQPChannel($connection);
$exchange = new AMQPExchange($channel);
$exchange->setName('my-exchange');
$exchange->setType('fanout');
$exchange->declare();
$queue = new AMQPQueue($channel);
$queue->setName('my-queue');
$queue->declare();
$queue->bind('my-exchange');
コンシューマーコード
$queue->consume(array($this, 'callback'));
public function callback(AMQPEnvelope $msg)
{
try {
//Do some business logic
} catch (Exception $ex) {
//Log exception
return;
}
return $queue->ack($msg->getDeliveryTag());
}
プロデューサーコード
$exchange->publish('message');
どの言語を使用していますか、いくつかのコードを提供できますか? – pinepain
@ zaq178miami、私の編集したメッセージを参照してください –
@Bram_Gerritsen、私の答えの更新を参照してください – pinepain