/** * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. */ package com.liferay.portal.kernel.messaging; import com.liferay.portal.kernel.log.Log; import com.liferay.portal.kernel.log.LogFactoryUtil; import com.liferay.portal.kernel.messaging.sender.SingleDestinationMessageSenderFactoryUtil; import com.liferay.portal.kernel.messaging.sender.SynchronousMessageSender; import com.liferay.portal.kernel.security.pacl.permission.PortalMessageBusPermission; import com.liferay.portal.kernel.security.pacl.permission.PortalRuntimePermission; import com.liferay.portal.kernel.util.ServiceProxyFactory; /** * @author Michael C. Han * @author Raymond Augé */ public class MessageBusUtil { public static void addDestination(Destination destination) { _messageBus.addDestination(destination); } public static Message createResponseMessage(Message requestMessage) { Message responseMessage = new Message(); responseMessage.setDestinationName( requestMessage.getResponseDestinationName()); responseMessage.setResponseId(requestMessage.getResponseId()); return responseMessage; } public static Message createResponseMessage( Message requestMessage, Object payload) { Message responseMessage = createResponseMessage(requestMessage); responseMessage.setPayload(payload); return responseMessage; } public static Destination getDestination(String destinationName) { return _messageBus.getDestination(destinationName); } /** * @deprecated As of 7.0.0, with no direct replacement */ @Deprecated public static MessageBusUtil getInstance() { PortalRuntimePermission.checkGetBeanProperty(MessageBusUtil.class); return new MessageBusUtil(); } public static MessageBus getMessageBus() { return _messageBus; } public static boolean hasMessageListener(String destination) { return _messageBus.hasMessageListener(destination); } public static void registerMessageListener( String destinationName, MessageListener messageListener) { PortalMessageBusPermission.checkListen(destinationName); _messageBus.registerMessageListener(destinationName, messageListener); } public static void removeDestination(String destinationName) { _messageBus.removeDestination(destinationName); } public static void sendMessage(String destinationName, Message message) { PortalMessageBusPermission.checkSend(destinationName); _messageBus.sendMessage(destinationName, message); } public static void sendMessage(String destinationName, Object payload) { PortalMessageBusPermission.checkSend(destinationName); Message message = new Message(); message.setPayload(payload); _messageBus.sendMessage(destinationName, message); } public static Object sendSynchronousMessage( String destinationName, Message message) throws MessageBusException { PortalMessageBusPermission.checkSend(destinationName); SynchronousMessageSender synchronousMessageSender = SingleDestinationMessageSenderFactoryUtil. getSynchronousMessageSender(_synchronousMessageSenderMode); return synchronousMessageSender.send(destinationName, message); } public static Object sendSynchronousMessage( String destinationName, Message message, long timeout) throws MessageBusException { PortalMessageBusPermission.checkSend(destinationName); SynchronousMessageSender synchronousMessageSender = SingleDestinationMessageSenderFactoryUtil. getSynchronousMessageSender(_synchronousMessageSenderMode); return synchronousMessageSender.send(destinationName, message, timeout); } public static Object sendSynchronousMessage( String destinationName, Object payload) throws MessageBusException { return sendSynchronousMessage(destinationName, payload, null); } public static Object sendSynchronousMessage( String destinationName, Object payload, long timeout) throws MessageBusException { return sendSynchronousMessage(destinationName, payload, null, timeout); } public static Object sendSynchronousMessage( String destinationName, Object payload, String responseDestinationName) throws MessageBusException { PortalMessageBusPermission.checkSend(destinationName); Message message = new Message(); message.setResponseDestinationName(responseDestinationName); message.setPayload(payload); return sendSynchronousMessage(destinationName, message); } public static Object sendSynchronousMessage( String destinationName, Object payload, String responseDestinationName, long timeout) throws MessageBusException { PortalMessageBusPermission.checkSend(destinationName); Message message = new Message(); message.setResponseDestinationName(responseDestinationName); message.setPayload(payload); return sendSynchronousMessage(destinationName, message, timeout); } public static void shutdown() { PortalRuntimePermission.checkGetBeanProperty(MessageBusUtil.class); _messageBus.shutdown(); } public static void shutdown(boolean force) { PortalRuntimePermission.checkGetBeanProperty(MessageBusUtil.class); _messageBus.shutdown(force); } public static boolean unregisterMessageListener( String destinationName, MessageListener messageListener) { PortalMessageBusPermission.checkListen(destinationName); return _messageBus.unregisterMessageListener( destinationName, messageListener); } public void setSynchronousMessageSenderMode( SynchronousMessageSender.Mode synchronousMessageSenderMode) { _synchronousMessageSenderMode = synchronousMessageSenderMode; } private static final Log _log = LogFactoryUtil.getLog(MessageBusUtil.class); private static volatile MessageBus _messageBus = ServiceProxyFactory.newServiceTrackedInstance( MessageBus.class, MessageBusUtil.class, "_messageBus", true); private static SynchronousMessageSender.Mode _synchronousMessageSenderMode; }