阅读了JMS的一些文档后,我完全对短语synchronous
和感到困惑asynchronouns
。
参见本页:http :
//docs.oracle.com/cd/E19798-01/821-1841/bncdq/index.html
同步
您可以使用receive方法来同步使用一条消息。调用start方法后,您可以随时使用此方法:
connection.start(); Message m = consumer.receive(); connection.start(); Message m = consumer.receive(1000); // time out after a second
要异步使用消息,请使用消息侦听器,这将在下一节中介绍。
异步
JMS消息侦听器消息侦听器是一个对象,充当消息的异步事件处理程序。此对象实现MessageListener接口,其中包含一个方法onMessage。在onMessage方法中,您定义消息到达时要执行的操作。
您可以使用setMessageListener方法向特定的MessageConsumer注册消息侦听器。例如,如果定义一个实现了MessageListener接口的名为Listener的类,则可以按以下方式注册消息侦听器:
Listener myListener = new Listener(); consumer.setMessageListener(myListener);
我有两个问题:
据我了解,JMS的本质是异步的。生产者将消息发布到队列/主题,不需要等待消费者。这是异步行为。怎么可能是“同步的”?
如果“ mesageListener”是异步的,但是在对spring-jms的测试中,我发现它始终在线程中运行。这意味着,如果我写Thread.sleep(2000)
在onMessage
,它必须等待下一个处理消息之前2秒。它是“异步的”吗?
如果您这样更好地理解它,请consumer.receive()
使用 拉 模型:您从队列中读取内容,并被阻止等待此消息,直到消息出现或超时为止。
使用侦听器使用 推 模型:注册一个侦听器,并在收到消息时在单独的线程中调用该侦听器。
一切都在Java线程中完成,并且侦听器调用也不例外。侦听器消息处理是否阻止队列中其他消息的处理,取决于有多少个线程专用于消息处理。如果将Spring配置为使用5个线程池来异步处理消息,则5个侦听器将能够并行处理消息。
在与JMS合作的过程中,我有一个疑问。据我所知,创建同步消息消费者是可能的。但是,我必须以一定的频率启动它,因为事实上没有侦听器。接下来,为了同步使用队列中的消息,我可以创建一个MDB并将池设置为1。我认为这不是一个好的解决办法。 我的目标是在消息出现在队列中时同步地使用它们。从我的观点来看,上述解决方案并不好:1。不时推出的消费者。2.MDB(通常异步)和池设置为1。 有什么适合我的解决方案吗?
我正在计划开发一个基于微服务的架构应用程序,当我阅读Ronnie Mitra的书《微服务架构》时,我决定使用Kafka进行内部通信;马特·麦克拉蒂;迈克·阿蒙森;伊拉克利·纳达雷什维利说: 让微服务直接与消息代理(如RabbitMQ等)交互很少是个好主意。如果两个微服务通过消息队列通道直接通信,那么它们共享一个数据空间(通道),我们已经详细讨论了两个微服务共享一个数据空间的弊病。相反,我们可以做的
主要内容:1 invokeOneway单向发送,1.1 invokeOnewayImpl单向调用,2 sendMessageSync同步发送,2.1 invokeSync同步调用,3 sendMessageAsync异步发送消息,3.1 invokeAsync异步调用,3.2 onExceptionImpl异常处理,4 NettyClientHandler处理服务端消息,4.1 processResponseCommand处理响应,基于RocketMQ release-4.9.3,深入的介绍了P
本文向大家介绍jquery中的ajax同步和异步详解,包括了jquery中的ajax同步和异步详解的使用技巧和注意事项,需要的朋友参考一下 之前一直在写JQUERY代码的时候遇到AJAX加载数据都需要考虑代码运行顺序问题。最近的项目用了到AJAX同步。这个同步的意思是当JS代码加载到当前AJAX的时候会把页面里所有的代码停止加载,页面出去假死状态,当这个AJAX执行完毕后才会继续运行其他代码页面假
本文向大家介绍同步和异步传输之间的区别,包括了同步和异步传输之间的区别的使用技巧和注意事项,需要的朋友参考一下 在数字电子设备中,同步传输和异步传输都是串行数据传输的一种类型,其中,基于用于同步的时钟脉冲,数据在发送方和接收方之间进行传输。 以下是同步传输和异步传输之间的重要区别- 序号 键 同步传输 异步传输 1 定义 同步传输是一种传输类型,其中在发送器和接收器之间共享一个公共时钟脉冲以允许同
问题内容: 同步和异步AJAX调用有什么区别?何时使用同步以及何时异步? 问题答案: 在最基本的级别上,当您希望调用在后台发生时,您可以使用异步模式,而当您希望代码等待直到调用完成时,则可以使用同步模式。 异步模式是AJAX调用的常用方法,因为通常在事件上附加一个回调函数,以便您可以在服务器端数据就绪时进行响应,而不必等待数据到达。