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
40 public class DefaultSynchronousMessageSender
41 implements SynchronousMessageSender {
42
43 public DefaultSynchronousMessageSender(
44 MessageBus messageBus, PortalUUID portalUUID, long timeout) {
45
46 _messageBus = messageBus;
47 _portalUUID = portalUUID;
48 _timeout = timeout;
49 }
50
51 public Object send(String destinationName, Message message)
52 throws MessageBusException {
53
54 return send(destinationName, message, _timeout);
55 }
56
57 public Object send(String destinationName, Message message, long timeout)
58 throws MessageBusException {
59
60 if (!_messageBus.hasDestination(destinationName)) {
61 return null;
62 }
63
64 message.setDestinationName(destinationName);
65
66 String responseDestinationName = message.getResponseDestinationName();
67
68
71 if (Validator.isNull(responseDestinationName) ||
72 !_messageBus.hasDestination(responseDestinationName)) {
73
74 if (_log.isDebugEnabled()) {
75 _log.debug(
76 "Response destination " + responseDestinationName +
77 " is not configured");
78 }
79
80 message.setResponseDestinationName(
81 DestinationNames.MESSAGE_BUS_DEFAULT_RESPONSE);
82 }
83
84 String responseId = _portalUUID.generate();
85
86 message.setResponseId(responseId);
87
88 SynchronousMessageListener synchronousMessageListener =
89 new SynchronousMessageListener(_messageBus, message, timeout);
90
91 return synchronousMessageListener.send();
92 }
93
94
97 public Object sendMessage(String destination, Message message)
98 throws MessageBusException {
99
100 return send(destination, message);
101 }
102
103
106 public Object sendMessage(String destination, Message message, long timeout)
107 throws MessageBusException {
108
109 return send(destination, message, timeout);
110 }
111
112 private static Log _log =
113 LogFactoryUtil.getLog(DefaultSynchronousMessageSender.class);
114
115 private MessageBus _messageBus;
116 private PortalUUID _portalUUID;
117 private long _timeout;
118
119 }