我mq_recieve后可以mq_send回复吗?

时间:2015-04-07 12:27:03

标签: linux message-queue

我有一个或多个守护程序应用正在运行并与之通信我有一个客户端应用程序。客户端应用程序在命令行上执行简单。机会只有一个会在特定时刻出现。当我执行诸如daemon update-config之类的命令时,客户端执行mq_open并发送命令。像list这样的命令我想要结果。看来如果我在收到后在我的守护进程中运行mq_send,我可能会在守护程序应用程序中收到该消息。

将回复发送给客户端的最佳方式是什么?在守护进程中意外处理它?在快速查找之后,似乎没有一个明显的解决方案,所以我sleep(1)似乎完全解决了我的问题,即使它是'黑客'。什么是最好的解决方案?睡觉是最容易理解和直接的解决方案吗?我不想生成随机/唯一值,传入它并打开另一个mq来发送它。一秒钟的睡眠感觉就像是最好的解决方案,但我想知道你的解决方案是什么。

1 个答案:

答案 0 :(得分:2)

使用消息传递系统时,即使它不是一般使用消息传递的最佳范例,也可以执行RPC调用。 RPC与消息传递的一般方法是:

  • 具有不同的请求和回复队列(后者可以是短暂的队列,为每个请求或持久队列创建);
  • 为每封邮件提供一个唯一ID,该ID将在回复中用于标识其回复的邮件。 (例如,它在AMQP中称为correlation_id)。

我猜你也可以使用与Posix队列相同的方法。