我们正在使用IBM MQ,最近我们遇到了一个问题,客户端应用程序声明为发送到MQ服务器的某些消息并未被MQ使用者使用。我们缺少日志记录生成/使用的消息,因此我们尝试检查MQ服务器日志/数据中的消息。 我们发现消息存储在/var/mqm/qmgrs/MQ_MANAGER/queues/中,但没有在队列文件中找到所有消息(没有找到旧消息) IBM MQ的滚动策略是什么?旧的队列文件放在哪里?
我有两个进程server.c和client.c,它们通过POSIX消息队列进行通信。客户端向队列发送一条消息,mq_notify告诉服务器一条消息已添加到队列中。然后,信号处理程序将接收并处理该消息。但是,我不能让它正常工作。添加来自client.c的消息永远不会发送信号处理程序(但是,如果我添加来自server.c的消息,它将设置处理程序)。服务器仍然可以从客户端接收放入队列中的消息,但是由于某些原因,这不会触发server.c的mq_notify中使用的处理程序。有人知道这是什么吗?以下是来自每一端的相关示例代码:
client.c
/* queue has already been cr