1
4
退房 Camel . 它可以在ActiveMQ中运行,也可以单独运行。骆驼为信息创建“路线”。在这种情况下,我建议您保持php回调URL的原样,并在camel中设置一个路由,从队列中获取消息并将其发送到回调URL。然后可以在PHP中使用stomp将消息发送到activemq。您的Java代码可以只使用JMS来处理传入和传出的消息。 |
2
0
你能让activemq执行shell命令吗?如果是这样,只要让activemq在有新消息要处理时通过命令行执行php脚本。这样可以避免运行cron作业和长时间运行php循环。 |
3
0
我认为你工作方向不对。消费者定期检查队列中是否有新消息,而不是相反。如果队列需要通知消费者从中读取数据,那么您还没有像您认为的那样真正地分离这些应用程序。 |
4
0
我认为他们试图解决的问题是,一个灯栈(其中php是其一部分)固有地与HTTP协议强制的请求/响应机制联系在一起,因此让一个使用者(它检查用php编写的activemq)队列是可行的,但进程的生存期自然会受到http协议中任何超时的限制。OL。解决方案是: 1-不要在apache/http中运行php订户,这样就可以设置时间限制(0),让php订户永远运行(直到崩溃为止),或者 2-意识到订阅者确实只是做“定期”检查,其间没有很多东西,因此,您可以删除睡眠,删除while循环,并从cron或类似对象中重复调用它,而不是while(1)do queue stuff();sleep();。 每个都有它自己的好处,但是如果cron()频率足够可调的话,两者都是一样好的。我的cron只能每分钟运行一次,这并不常见,因此我必须结合以上两种方法: 每分钟从cron调用: 时间=分钟是多少? while(什么分钟是时间){ do_queue_stufacture(); 睡眠(1); } 我认为人们可能追求的是一种向PHP用户系统提供ActiveMQ系统“提示”的方法,即队列中可能有需要处理的内容,因此,如果实际上没有真正要做的事情,请保存所有这些队列处理的开始/停止/睡眠等内容。骆驼似乎是这样做的方法。 |