public DemoQueueReader(HazelcastMQInstance hazelcastMQInstance) { mqContext = hazelcastMQInstance.createContext(); mqConsumer = mqContext.createConsumer("/queue/demo.queue"); mqConsumer.setMessageListener(new HazelcastMQMessageListener() { @Override public void onMessage(HazelcastMQMessage msg) { log.info("Read data: {}", msg.getBodyAsString()); } }); }
/** * Constructs the relayer which will immediately create a context and begin * listening for messages. */ public TopicMessageRelayer() { context = createContext(); consumer = context.createConsumer(TXN_TOPIC_QUEUE_DESTINATION); consumer.setMessageListener(this); }
@Override public MessageConsumer createConsumer(Destination destination) throws JMSException { HazelcastMQJmsMessageConsumer consumer = null; if (destination instanceof HazelcastMQJmsTopic) { HazelcastMQJmsTopic topic = (HazelcastMQJmsTopic) destination; HazelcastMQConsumer mqConsumer = mqContext.createConsumer(topic .getMqName()); consumer = new HazelcastMQJmsTopicSubscriber(mqConsumer, this, topic); } else { HazelcastMQJmsQueue queue = (HazelcastMQJmsQueue) destination; HazelcastMQConsumer mqConsumer = mqContext.createConsumer(queue .getMqName()); consumer = new HazelcastMQJmsQueueReceiver(mqConsumer, this, queue); } return consumer; }
/** * Constructs the reply manager which will listen for replies on the given * destination. If the destination is null, a temporary reply queue will be * created and managed by the reply manager. * * @param replyToDest the reply to destination or null * @param mqInstance the HzMq instance brokering all replies */ public ReplyManager(String replyToDest, HazelcastMQInstance mqInstance) { this.pendingReplyMap = new ConcurrentHashMap<>(); this.nextExpiration = new AtomicLong(Long.MAX_VALUE); this.mqContext = mqInstance.createContext(); mqContext.setAutoStart(false); // If we don't have an exclusive reply queue, create a temporary queue. this.replyToDestination = replyToDest == null ? mqContext.createTemporaryQueue() : replyToDest; this.mqConsumer = mqContext.createConsumer(this.replyToDestination); mqConsumer.setMessageListener(this); }
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(); }
/** * Constructs the consumer. The consumer will not start listening for * messages until it is started. * * @param config the component configuration * @param endpoint the endpoint that the consumer belongs to */ public SingleThreadedConsumer(HazelcastMQCamelConfig config, HazelcastMQCamelEndpoint endpoint) { this.mqContext = config.getHazelcastMQInstance().createContext(); this.mqContext.setAutoStart(false); this.mqConsumer = mqContext.createConsumer(endpoint.getDestination()); this.mqConsumer.setMessageListener(this); }
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(); }
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(); }
@Override protected void doSubscribe(StompletRequest req, StompletResponse res) throws Exception { Frame frame = req.getFrame(); // Get the destination and ID headers. String destination = getRequiredHeader( org.mpilone.yeti.Headers.DESTINATION, frame); String id = getRequiredHeader(org.mpilone.yeti.Headers.ID, frame); // Check that this isn't an existing subscription ID. if (subscriptions.containsKey(id)) { throw new StompClientException(format( "Subscription with id [%s] already exists.", id), null, frame); } // Create the HazelcastMQ components. HazelcastMQContext session = config.getHazelcastMQInstance().createContext( false); HazelcastMQConsumer consumer = session.createConsumer(destination); // Create the subscription. ClientSubscription subscription = new ClientSubscription(id, res.getFrameChannel(), consumer, session); subscriptions.put(id, subscription); writeOptionalReceipt(frame, res.getFrameChannel()); }
@Override protected void doStart() throws Exception { if (mqContext == null) { mqContext = getEndpoint().getConfiguration().getHazelcastMQInstance(). createContext(); mqContext.setAutoStart(true); mqConsumer = mqContext.createConsumer(getEndpoint().getDestination()); } }
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(); }
HazelcastMQConsumer mqConsumer = mqContext.createConsumer(destination); byte[] msgBody = mqConsumer.receiveBodyNoWait(); Assert.isNull(msgBody, "Received message that should have expired.");
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(); }
mqContext.createConsumer("/queue/example.dest")) {
.createConsumer("/queue/example.dest");
mqContext.createConsumer(requestDest)) { mqContext.createConsumer(replyDest)) {
HazelcastMQConsumer mqConsumer = mqContext.createConsumer(destination);
.createConsumer(destination); mqConsumer.setMessageListener(this);
mqContext.createConsumer("/queue/secondo.test")) { HazelcastMQMessage msg = mqConsumer.receive(12, TimeUnit.SECONDS);
mqContext.createConsumer("/queue/primo.test")) { HazelcastMQMessage msg = mqConsumer.receive(2, TimeUnit.SECONDS); assertMessage(msg); mqContext.createConsumer("/queue/secondo.test")) { HazelcastMQMessage msg = mqConsumer.receive(2, TimeUnit.SECONDS); assertMessage(msg);