1
22
23 package com.liferay.portal.kernel.messaging.sender;
24
25 import com.liferay.portal.kernel.log.Log;
26 import com.liferay.portal.kernel.log.LogFactoryUtil;
27 import com.liferay.portal.kernel.messaging.DestinationNames;
28 import com.liferay.portal.kernel.messaging.Message;
29 import com.liferay.portal.kernel.messaging.MessageBus;
30 import com.liferay.portal.kernel.messaging.MessageBusException;
31 import com.liferay.portal.kernel.util.Validator;
32 import com.liferay.portal.kernel.uuid.PortalUUID;
33
34
41 public class DefaultSynchronousMessageSender
42 implements SynchronousMessageSender {
43
44 public DefaultSynchronousMessageSender(
45 MessageBus messageBus, PortalUUID portalUUID, long timeout) {
46
47 _messageBus = messageBus;
48 _portalUUID = portalUUID;
49 _timeout = timeout;
50 }
51
52 public Object sendMessage(String destination, Message message)
53 throws MessageBusException {
54
55 return sendMessage(destination, message, _timeout);
56 }
57
58 public Object sendMessage(String destination, Message message, long timeout)
59 throws MessageBusException {
60
61 if (!_messageBus.hasDestination(destination)) {
62 return null;
63 }
64
65 message.setDestination(destination);
66
67 String responseDestination = message.getResponseDestination();
68
69
72 if (Validator.isNull(responseDestination) ||
73 !_messageBus.hasDestination(responseDestination)) {
74
75 if (_log.isDebugEnabled()) {
76 _log.debug(
77 "Response destination " + responseDestination +
78 " is not configured");
79 }
80
81 message.setResponseDestination(
82 DestinationNames.MESSAGE_BUS_DEFAULT_RESPONSE);
83 }
84
85 String responseId = _portalUUID.generate();
86
87 message.setResponseId(responseId);
88
89 SynchronousMessageListener synchronousMessageListener =
90 new SynchronousMessageListener(_messageBus, message, timeout);
91
92 return synchronousMessageListener.send();
93 }
94
95 private static Log _log =
96 LogFactoryUtil.getLog(DefaultSynchronousMessageSender.class);
97
98 private MessageBus _messageBus;
99 private PortalUUID _portalUUID;
100 private long _timeout;
101
102 }