001
014
015 package com.liferay.portal.kernel.messaging;
016
017 import com.liferay.portal.kernel.log.Log;
018 import com.liferay.portal.kernel.log.LogFactoryUtil;
019 import com.liferay.portal.kernel.messaging.sender.MessageSender;
020 import com.liferay.portal.kernel.messaging.sender.SingleDestinationMessageSender;
021
022
026 public abstract class BaseMessageStatusMessageListener
027 implements MessageListener {
028
029 public BaseMessageStatusMessageListener() {
030 }
031
032
035 @Deprecated
036 public BaseMessageStatusMessageListener(
037 SingleDestinationMessageSender statusSender,
038 MessageSender responseSender) {
039
040 _statusSender = statusSender;
041 _responseSender = responseSender;
042 }
043
044 @Override
045 public void receive(Message message) {
046 MessageStatus messageStatus = new MessageStatus();
047
048 messageStatus.startTimer();
049
050 try {
051 doReceive(message, messageStatus);
052 }
053 catch (Exception e) {
054 _log.error(
055 "Unable to process request " + message.getDestinationName(), e);
056
057 messageStatus.setException(e);
058 }
059 finally {
060 messageStatus.stopTimer();
061
062 _statusSender.send(messageStatus);
063 }
064 }
065
066 public void setResponseSender(MessageSender responseSender) {
067 _responseSender = responseSender;
068 }
069
070 public void setStatusSender(SingleDestinationMessageSender statusSender) {
071 _statusSender = statusSender;
072 }
073
074 protected abstract void doReceive(
075 Message message, MessageStatus messageStatus)
076 throws Exception;
077
078 protected MessageSender getResponseSender() {
079 return _responseSender;
080 }
081
082 private static final Log _log = LogFactoryUtil.getLog(
083 BaseMessageStatusMessageListener.class);
084
085 private MessageSender _responseSender;
086 private SingleDestinationMessageSender _statusSender;
087
088 }