private HeartBeatListener() { setAlive(false); RabbitAdmin rabbitAdmin = RabbitConfiguration.getRabbitAdmin(); Queue queue = rabbitAdmin.declareQueue(); FanoutExchange exchange = new FanoutExchange(HEART_BEAT_EXCHANGE); rabbitAdmin.declareBinding(BindingBuilder.bind(queue).to(exchange)); HeartBeatMessageListener heartBeatMessageListener = new HeartBeatMessageListener(); SimpleMessageListenerContainer messageListenerContainer = new SimpleMessageListenerContainer(); messageListenerContainer.setQueues(queue); messageListenerContainer.setConnectionFactory(RabbitConfiguration.getConnectionFactory()); messageListenerContainer.setMessageListener(heartBeatMessageListener); messageListenerContainer.start(); Thread thread = new Thread( new Runnable() { @Override public void run() { while (true) { try { Message result; result = heartBeats.poll(TIMEOUT, TimeUnit.MILLISECONDS); if (result == null) { setAlive(false); } else { setAlive(true); } } catch (InterruptedException e) { setAlive(false); } } } }, "server-heart-beat-listener"); thread.start(); }
private SimpleMessageListenerContainer createContainer() throws Exception { // if (!messageDriven) TODO: no container attributes would apply if not message-driven SimpleMessageListenerContainer container = new SimpleMessageListenerContainer(); if (this.acknowledgeMode != null) { container.setAcknowledgeMode(this.acknowledgeMode); } if (!ObjectUtils.isEmpty(this.adviceChain)) { container.setAdviceChain(this.adviceChain); } container.setAutoStartup(this.autoStartup); container.setChannelTransacted(this.channelTransacted); if (this.concurrentConsumers != null) { container.setConcurrentConsumers(this.concurrentConsumers); } container.setConnectionFactory(this.connectionFactory); if (this.errorHandler != null) { container.setErrorHandler(this.errorHandler); } if (this.exposeListenerChannel != null) { container.setExposeListenerChannel(this.exposeListenerChannel); } if (this.messagePropertiesConverter != null) { container.setMessagePropertiesConverter(this.messagePropertiesConverter); } if (this.phase != null) { container.setPhase(this.phase); } if (this.prefetchCount != null) { container.setPrefetchCount(this.prefetchCount); } if (this.receiveTimeout != null) { container.setReceiveTimeout(this.receiveTimeout); } if (this.recoveryInterval != null) { container.setRecoveryInterval(this.recoveryInterval); } if (this.shutdownTimeout != null) { container.setShutdownTimeout(this.shutdownTimeout); } if (this.taskExecutor != null) { container.setTaskExecutor(this.taskExecutor); } if (this.transactionAttribute != null) { container.setTransactionAttribute(this.transactionAttribute); } if (this.transactionManager != null) { container.setTransactionManager(this.transactionManager); } if (this.txSize != null) { container.setTxSize(this.txSize); } if (this.missingQueuesFatal != null) { container.setMissingQueuesFatal(this.missingQueuesFatal); } return container; }
@Bean SimpleMessageListenerContainer container( ConnectionFactory connectionFactory, MessageListenerAdapter listenerAdapter) { SimpleMessageListenerContainer container = new SimpleMessageListenerContainer(); container.setConnectionFactory(connectionFactory); container.setQueueNames(MAIL_MESSAGE_CMD_QUEUE); container.setMessageListener(listenerAdapter); return container; }
@Bean public SimpleMessageListenerContainer messageListenerContainer(AmqpAdmin amqpAdmin) { SimpleMessageListenerContainer container = new SimpleMessageListenerContainer(); container.setConnectionFactory(rabbitConnectionFactory()); container.setQueueNames(clientQueue(amqpAdmin).getName()); container.setMessageListener( new MessageListenerAdapter(serviceMessageReceiver, messageConverter)); // No acks will be sent (incompatible with channelTransacted=true). RabbitMQ calls this // "autoack" because the broker assumes all messages are acked without any action from the // consumer. container.setAcknowledgeMode(AcknowledgeMode.NONE); return container; }