Rabbitmq怎么知道消费者执行是否成功.
Sep 12, 2016 pm 05:44 PM
场景:下订单,扣库存。
我的想法是把下订单的任务放到队列里面 一个个进行处理,这样库存在扣减的时候,就不会出错了。
就是生产者与消费者
用户在UI中点击“提交订单”时,把任务放到队列,等待队列处理这个任务的结果,根据结果(成功或者失败)进行页面跳转
但是有一个问题:队列处理后,如何把结果通知生产者?
以RabbitMQ为例子,有哪位大神可以给出代码.
回复内容:
场景:下订单,扣库存。
我的想法是把下订单的任务放到队列里面 一个个进行处理,这样库存在扣减的时候,就不会出错了。
就是生产者与消费者
用户在UI中点击“提交订单”时,把任务放到队列,等待队列处理这个任务的结果,根据结果(成功或者失败)进行页面跳转
但是有一个问题:队列处理后,如何把结果通知生产者?
以RabbitMQ为例子,有哪位大神可以给出代码.
quene
只能保证消息到达与否,具体你业务是否执行成功。这个消息队列可不保证。
生产者发布消息之后监听另外一个返回消息队列,例如队列b。
消费者消费完后把结果消息压入队列b。
这样原来的生产者就能获取返回结果了。
RabbitMQ中实现RPC的机制是:
客户端发送请求(消息)时,在消息的属性(MessageProperties,在AMQP协议中定义了14中properties,这些属性会随着消息一起发送)中设置两个值replyTo(一个Queue名称,用于告诉服务器处理完成后将通知我的消息发送到这个Queue中)和correlationId(此次请求的标识号,服务器处理完成后需要将此属性返还,客户端将根据这个id了解哪条请求被成功执行了或执行失败)
服务器端收到消息并处理
服务器端处理完消息后,将生成一条应答消息到replyTo指定的Queue,同时带上correlationId属性
客户端之前已订阅replyTo指定的Queue,从中收到服务器的应答消息后,根据其中的correlationId属性分析哪条请求被执行了,根据执行结果进行后续业务处理
这里面有指出生产者会监听另一个replyTo的队列,从中取得对应应答消息触发后续操作。

Artikel Panas

Alat panas Tag

Artikel Panas

Tag artikel panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Panduan Pemasangan dan Naik Taraf PHP 8.4 untuk Ubuntu dan Debian

Cara Menyediakan Kod Visual Studio (Kod VS) untuk Pembangunan PHP
