Ejemplo n.º 1
0
 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;
 }
Ejemplo n.º 3
0
  @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;
 }