1
14
15 package com.liferay.portal.kernel.messaging;
16
17 import com.liferay.portal.kernel.log.Log;
18 import com.liferay.portal.kernel.log.LogFactoryUtil;
19 import com.liferay.portal.kernel.messaging.sender.MessageSender;
20 import com.liferay.portal.kernel.messaging.sender.SingleDestinationMessageSender;
21
22
27 public abstract class BaseMessageListener implements MessageListener {
28
29 public BaseMessageListener() {
30 }
31
32
35 public BaseMessageListener(
36 SingleDestinationMessageSender statusSender,
37 MessageSender responseSender) {
38
39 _statusSender = statusSender;
40 _responseSender = responseSender;
41 }
42
43 public void receive(Message message) {
44 MessageStatus messageStatus = new MessageStatus();
45
46 messageStatus.startTimer();
47
48 try {
49 doReceive(message, messageStatus);
50 }
51 catch (Exception e) {
52 _log.error(
53 "Unable to process request " + message.getDestinationName(), e);
54
55 messageStatus.setException(e);
56 }
57 finally {
58 messageStatus.stopTimer();
59
60 _statusSender.send(messageStatus);
61 }
62 }
63
64 public void setResponseSender(MessageSender responseSender) {
65 _responseSender = responseSender;
66 }
67
68 public void setStatusSender(SingleDestinationMessageSender statusSender) {
69 _statusSender = statusSender;
70 }
71
72 protected abstract void doReceive(
73 Message message, MessageStatus messageStatus)
74 throws Exception;
75
76 protected MessageSender getResponseSender() {
77 return _responseSender;
78 }
79
80 private static Log _log = LogFactoryUtil.getLog(BaseMessageListener.class);
81
82 private MessageSender _responseSender;
83 private SingleDestinationMessageSender _statusSender;
84
85 }