List of usage examples for javax.jms MapMessage getJMSMessageID
String getJMSMessageID() throws JMSException;
From source file:org.wso2.carbon.appfactory.eventing.jms.MessageStore.java
public void addMessage(String subscriptionId, MapMessage message) { Map<String, MapMessage> messages = messageMap.get(subscriptionId); if (messages == null) { messageMap.put(subscriptionId, new HashMap<String, MapMessage>()); }//from w ww. j a v a 2s .c o m try { messageMap.get(subscriptionId).put(message.getJMSMessageID(), message); } catch (JMSException e) { log.error("Error occurred while storing message temporally.", e); } }
From source file:org.wso2.carbon.appfactory.eventing.jms.TopicPublisher.java
public void publishMessage(Event event) throws AppFactoryEventException { Properties properties = new Properties(); properties.put(Context.INITIAL_CONTEXT_FACTORY, QPID_ICF); properties.put(CF_NAME_PREFIX + CF_NAME, Util.getTCPConnectionURL()); properties.put(CarbonConstants.REQUEST_BASE_CONTEXT, "true"); try {/* ww w. j a v a 2 s . c om*/ ctx = new InitialContext(properties); connFactory = (TopicConnectionFactory) ctx.lookup(CF_NAME); } catch (NamingException e) { throw new AppFactoryEventException("Failed to initialize InitialContext.", e); } TopicConnection topicConnection = null; TopicSession topicSession = null; try { topicConnection = connFactory.createTopicConnection(); topicSession = topicConnection.createTopicSession(false, TopicSession.AUTO_ACKNOWLEDGE); // Send message String tenantDomain = CarbonContext.getThreadLocalCarbonContext().getTenantDomain(); Topic topic = topicSession.createTopic(event.getTarget()); //Until MB supports 'Dynamic Topics' we have to create a subscription, therefore forcing Message broker to // create the topic. String defaultSubscriptionId = tenantDomain + "/" + DEFAULT_SUBSCRIPTION + UUID.randomUUID(); topicSubscriber = topicSession.createDurableSubscriber(topic, defaultSubscriptionId); // We are unsubscribing from the Topic as soon as topicSession.unsubscribe(defaultSubscriptionId); // create the message to send MapMessage mapMessage = topicSession.createMapMessage(); mapMessage.setString(MESSAGE_TITLE, event.getMessageTitle()); mapMessage.setString(MESSAGE_BODY, event.getMessageBody()); javax.jms.TopicPublisher topicPublisher = topicSession.createPublisher(topic); topicConnection.start(); topicPublisher.publish(mapMessage); if (log.isDebugEnabled()) { log.debug("Message with Id:" + mapMessage.getJMSMessageID() + ", with title:" + event.getMessageTitle() + " was successfully published."); } } catch (JMSException e) { log.error("Failed to publish message due to " + e.getMessage(), e); throw new AppFactoryEventException("Failed to publish message due to " + e.getMessage(), e); } finally { if (topicSubscriber != null) { try { topicSubscriber.close(); } catch (JMSException e) { log.error("Failed to close default topic subscriber", e); } } if (topicSession != null) { try { topicSession.close(); } catch (JMSException e) { log.error("Failed to close topic session", e); } } if (topicConnection != null) { try { topicConnection.close(); } catch (JMSException e) { log.error("Failed to close topic connection", e); } } } }
From source file:org.wso2.carbon.appfactory.s4.integration.TenantStratosSubscriptionMessagePublisher.java
/** * Publish message to MB/ActiveMQ Queue/* w ww. j a v a 2 s .c o m*/ * @param runtimeJson runtimebeans as a json * @param tenantInfoJson tenantInfoBean as a json * @param restServiceProperties propertyMap * @param stage current stage * @throws AppFactoryEventException */ public void publishMessage(String runtimeJson, String tenantInfoJson, Map<String, String> restServiceProperties, String stage) throws AppFactoryEventException { Properties properties = new Properties(); properties.put(Context.INITIAL_CONTEXT_FACTORY, AppFactoryConstants.ANDES_ICF); properties.put(AppFactoryConstants.CF_NAME_PREFIX + AppFactoryConstants.CF_NAME, Util.getTCPConnectionURL()); properties.put(AppFactoryConstants.TOPIC, topicName); TopicConnection topicConnection = null; TopicSession topicSession = null; try { ctx = new InitialContext(properties); connFactory = (TopicConnectionFactory) ctx.lookup(AppFactoryConstants.CF_NAME); topicConnection = connFactory.createTopicConnection(); topicConnection.start(); topicSession = topicConnection.createTopicSession(false, TopicSession.CLIENT_ACKNOWLEDGE); Topic topic = topicSession.createTopic(topicName); MapMessage mapMessage = topicSession.createMapMessage(); mapMessage.setString(AppFactoryConstants.STAGE, stage); mapMessage.setString(AppFactoryConstants.RUNTIMES_INFO, runtimeJson); mapMessage.setString(AppFactoryConstants.TENANT_INFO, tenantInfoJson); javax.jms.TopicPublisher topicPublisher = topicSession.createPublisher(topic); topicPublisher.publish(mapMessage); //TODO remove this log log.info("Message with Id:" + mapMessage.getJMSMessageID() + " was successfully published to the" + " topic " + topicName); if (log.isDebugEnabled()) { log.debug("Message with Id:" + mapMessage.getJMSMessageID() + " was successfully published to the" + " topic " + topicName); } } catch (NamingException e) { String msg = "Failed to initialize InitialContext"; throw new AppFactoryEventException(msg, e); } catch (JMSException e) { String msg = "Failed to publish message due to " + e.getMessage(); throw new AppFactoryEventException(msg, e); } finally { if (topicSession != null) { try { topicSession.close(); } catch (JMSException e) { log.error("Failed to close topic session", e); } } if (topicConnection != null) { try { topicConnection.close(); } catch (JMSException e) { log.error("Failed to close topic connection", e); } } } }