spring JmsTemplate的sendAndReceive方法

spring JmsTemplate的sendAndReceive方法:
使用destinationName字符串和MessageCreator的匿名内部类作为参数,JmsMessageVo中的数据装入MessageCreator,执行executeLocal:
使用SessionCallback匿名内部类作为参数,ConnectionFactory创建createConnection一个connection,使用connection.createSession创建session,启动连接connection.start();SessionCallback的实例化对象调用doInJms,传入session作为参数:
resolveDestinationName(session, destinationName)将指定的目的地名解析为目的地实例Destination,执行JmsTemplate的doSendAndReceive(session, destination, messageCreator)方法:
发送消息doSend(producer, requestMessage),接收消息doReceive(consumer, getReceiveTimeout())
spring JmsTemplate的sendAndReceive方法_第1张图片

默认RECEIVE_TIMEOUT_NO_WAIT=-1,timeout=0,接下来如果执行receiveNoWait()不阻塞等待,直接返回null,receive(timeout)传参表示等待timeout时间,不传表示一直处于阻塞状态等待消息,所以默认情况下会一直阻塞等待。
接收是阻塞式的接收,默认会一直阻塞等待,直到接收到了消息。也可以设置一个最长的等待时间参数,超过这个时间,接收的方法将得到null的结果。

你可能感兴趣的:(spring JmsTemplate的sendAndReceive方法)