@Override public MessageProducer createProducer(Destination destination) throws JMSException { HazelcastMQProducer mqProducer = mqContext.createProducer(); HazelcastMQJmsMessageProducer producer = new HazelcastMQJmsMessageProducer( mqProducer, this, destination); return producer; }
@Transactional public void processWithTransaction() { try (HazelcastMQContext mqContext = getContext(hazelcastMQInstance)) { HazelcastMQProducer producer = mqContext.createProducer( "/queue/demo.queue"); log.info("Sending to queue in transaction."); producer.send(getClass().getName() + ": processWithTransaction"); log.info("Sleeping."); sleep(5, TimeUnit.SECONDS); log.info("Done."); } }
@Transactional public void processWithTransactionAndException() { try (HazelcastMQContext mqContext = getContext(hazelcastMQInstance)) { HazelcastMQProducer producer = mqContext.createProducer( "/queue/demo.queue"); log.info("Sending to queue in transaction."); producer.send(getClass().getName() + ": processWithTransactionAndException"); log.info("Sleeping."); sleep(5, TimeUnit.SECONDS); log.info("Throwing exception in transaction."); throw new RuntimeException("Better roll back."); } }
public void processWithoutTransaction() { try (HazelcastMQContext mqContext = getContext(hazelcastMQInstance)) { HazelcastMQProducer producer = mqContext.createProducer( "/queue/demo.queue"); log.info("Sending to queue outside transaction."); producer.send(getClass().getName() + ": processWithoutTransaction"); log.info("Sleeping."); sleep(5, TimeUnit.SECONDS); log.info("Done."); } }
@Override public void onMessage(HazelcastMQMessage msg) { context.createProducer().send(msg.getDestination(), msg); }
@Override protected void doStart() throws Exception { super.doStart(); if (mqContext == null) { mqContext = config.getHazelcastMQInstance().createContext(); mqProducer = mqContext.createProducer(); } replyManager.start(); }
private void sendAndReceiveOnSingleOtherNode(ClusterNode node1, ClusterNode node3) { HazelcastMQProducer mqProducer = node1.getMqContext().createProducer(); mqProducer.send(destination, "Hello " + msgCounter++); HazelcastMQConsumer mqConsumer = node3.getMqContext().createConsumer( destination); String msg = new String(mqConsumer.receiveBody(1, TimeUnit.SECONDS)); log.info("Got message on node 3: " + msg); mqConsumer.close(); }
/** * Sends a reply message if the exchange has a valid message in the out or * in fields (in that order). * * @param correlationId the optional correlation ID to set on the out going * message * @param replyToDestination the reply to destination * @param camelExchange the exchange containing the message to send as the * reply */ private void sendReply(String correlationId, String replyToDestination, Exchange camelExchange) { Message camelMsg = camelExchange.hasOut() ? camelExchange.getOut() : camelExchange.getIn(); if (camelMsg != null) { try { HazelcastMQMessage msg = messageConverter.fromCamelMessage(camelMsg); msg.getHeaders().remove(org.mpilone.hazelcastmq.core.Headers.REPLY_TO); msg.setDestination(replyToDestination); msg.setCorrelationId(correlationId); mqContext.createProducer(replyToDestination).send(msg); } catch (Throwable ex) { camelExchange.setException(ex); } } } }
HazelcastMQProducer mqProducer = mqContext.createProducer(); mqProducer.setTimeToLive(3000); mqProducer.send(destination, "I only have a few seconds to live!");
@Override protected void doSend(StompletRequest req, StompletResponse res) throws Exception { Frame frame = req.getFrame(); // Get the destination header. String destName = getRequiredHeader( org.mpilone.yeti.Headers.DESTINATION, frame); // Get the optional transaction ID. String transactionId = frame.getHeaders().get( org.mpilone.yeti.Headers.TRANSACTION); // Use a transacted context if we have an ID. Otherwise use the default // context. if (transactionId == null) { transactionId = DEFAULT_CONTEXT_TXN_ID; } ClientTransaction tx = transactions.get(transactionId); if (tx == null) { throw new StompClientException(format("Transaction [%s] is not active.", transactionId), null, frame); } HazelcastMQContext context = tx.getContext(); // Create the producer. HazelcastMQProducer producer = context.createProducer(); // Convert and send the message. producer.send(destName, config.getFrameConverter().fromFrame(frame)); writeOptionalReceipt(frame, res.getFrameChannel()); }
private void sendKillAndReceiveOnMultipleNodes(ClusterNode node1, ClusterNode node2, ClusterNode node3) { HazelcastMQProducer mqProducer = node1.getMqContext().createProducer(); mqProducer.send(destination, "Hello " + msgCounter++); mqProducer.send(destination, "Hello " + msgCounter++); // Kill the node. This doesn't prove too much because we don't know where // the original data landed in the cluster. There's a good chance the // "master" data isn't sitting on node1 anyway. node1.kill(); HazelcastMQConsumer mqConsumer = node2.getMqContext().createConsumer( destination); String msg = new String(mqConsumer.receiveBody(1, TimeUnit.SECONDS)); log.info("Got message on node 2: " + msg); mqConsumer.close(); mqConsumer = node3.getMqContext().createConsumer(destination); msg = new String(mqConsumer.receiveBody(1, TimeUnit.SECONDS)); log.info("Got message on node 3: " + msg); mqConsumer.close(); }
private void sendKillTwoRestartOneKillOneAndReceive(ClusterNode node1, ClusterNode node2, ClusterNode node3) throws InterruptedException { HazelcastMQProducer mqProducer = node1.getMqContext().createProducer(); mqProducer.send(destination, "Hello " + msgCounter++); mqProducer.send(destination, "Hello " + msgCounter++); // Kill the first two nodes. Again, this may not prove too much because we // don't know where the original data landed in the cluster. There's a // chance the "master" data isn't sitting on node1 or node2 anyway. node1.kill(); node2.kill(); HazelcastMQConsumer mqConsumer = node3.getMqContext().createConsumer( destination); String msg = new String(mqConsumer.receiveBody(1, TimeUnit.SECONDS)); log.info("Got message on node 3: " + msg); mqConsumer.close(); // Now restart node 2 and give it some time to join the cluster and migrate // data. node2.restart(); Thread.sleep(10000); // Now kill node 3. In theory the remaining queued message should have // migrated to node 2. node3.kill(); mqConsumer = node2.getMqContext().createConsumer(destination); msg = new String(mqConsumer.receiveBody(1, TimeUnit.SECONDS)); log.info("Got message on node 2: " + msg); mqConsumer.close(); }
HazelcastMQProducer mqProducer = mqContext.createProducer();
HazelcastMQContext mqContext = mqInstance.createContext(); HazelcastMQProducer mqProducer = mqContext.createProducer();
private void sendAndReceiveOnMultipleNodes(ClusterNode node1, ClusterNode node2, ClusterNode node3) { HazelcastMQProducer mqProducer = node1.getMqContext().createProducer(); mqProducer.send(destination, "Hello " + msgCounter++); mqProducer.send(destination, "Hello " + msgCounter++); mqProducer.send(destination, "Hello " + msgCounter++); mqProducer.send(destination, "Hello " + msgCounter++); HazelcastMQConsumer mqConsumer = node2.getMqContext().createConsumer( destination); String msg = new String(mqConsumer.receiveBody(1, TimeUnit.SECONDS)); log.info("Got message on node 2: " + msg); mqConsumer.close(); mqConsumer = node1.getMqContext().createConsumer(destination); msg = new String(mqConsumer.receiveBody(1, TimeUnit.SECONDS)); log.info("Got message on node 1: " + msg); mqConsumer.close(); mqConsumer = node3.getMqContext().createConsumer(destination); msg = new String(mqConsumer.receiveBody(1, TimeUnit.SECONDS)); log.info("Got message on node 3: " + msg); mqConsumer.close(); mqConsumer = node2.getMqContext().createConsumer(destination); msg = new String(mqConsumer.receiveBody(1, TimeUnit.SECONDS)); log.info("Got message on node 2: " + msg); mqConsumer.close(); }
HazelcastMQProducer mqProducer = mqContext.createProducer(); HazelcastMQConsumer mqConsumer = mqContext.createConsumer(destination);
private void sendKillTwoAndReceive(ClusterNode node1, ClusterNode node2, ClusterNode node3) { log.info("Sending messages on node 1"); HazelcastMQProducer mqProducer = node1.getMqContext().createProducer(); mqProducer.send(destination, "Hello " + msgCounter++); mqProducer.send(destination, "Hello " + msgCounter++); // Kill the first two nodes. Again, this may not prove too much because we // don't know where the original data landed in the cluster. There's a // chance the "master" data isn't sitting on node1 or node2 anyway. log.info("Killing node 1"); node1.kill(); log.info("Killing node 2"); node2.kill(); log.info("Attempting receive from node 3"); HazelcastMQConsumer mqConsumer = node3.getMqContext().createConsumer( destination); String msg = new String(mqConsumer.receiveBody(1, TimeUnit.SECONDS)); log.info("Got message on node 3: " + msg); mqConsumer.close(); mqConsumer = node3.getMqContext().createConsumer(destination); msg = new String(mqConsumer.receiveBody(1, TimeUnit.SECONDS)); log.info("Got message on node 3: " + msg); mqConsumer.close(); }
HazelcastMQProducer mqProducer = mqContext.createProducer(); mqProducer.send("/queue/primo.test", "Hello World!");
HazelcastMQProducer mqProducer = mqContext.createProducer(); mqProducer.send("/queue/primo.test", "Hello World!");
HazelcastMQContext mqConsumerContext = mqInstance.createContext(); HazelcastMQProducer mqProducer = mqProducerContext.createProducer();