예제 #1
0
  public void produceMsg(String text) throws Exception {
    // Create a ConnectionFactory
    ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory("vm://localhost");

    // Create a Connection
    Connection connection = connectionFactory.createConnection();
    connection.start();

    // Create a Session
    Session session = connection.createSession(false, Session.CLIENT_ACKNOWLEDGE);

    // Create the destination (Topic or Queue)
    Destination destination = session.createQueue("TEST.FOO");

    // Create a MessageProducer from the Session to the Topic or Queue
    MessageProducer producer = session.createProducer(destination);
    producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);

    // Create a messages
    TextMessage message = session.createTextMessage(text);
    producer.send(message);

    // Clean up
    session.close();
    connection.close();
  }
예제 #2
0
  public static void main(String[] args) {
    try {
      Parameters parameters = new Parameters(args);

      ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(parameters.url);
      Connection connection = connectionFactory.createConnection();
      connection.start();

      Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

      Topic destination = session.createTopic(parameters.topic);

      MessageProducer producer = session.createProducer(destination);
      producer.setDeliveryMode(DeliveryMode.PERSISTENT);

      String messageBody = IOUtils.toString(new FileReader(parameters.message));

      TextMessage message = session.createTextMessage(messageBody);
      message.setStringProperty("Channel", parameters.channel);
      message.setJMSExpiration(parameters.expiration);

      LOG.info("Sent message: {}", message);
      producer.send(message);

      session.close();
      connection.close();
    } catch (Exception e) {
      LOG.error("Producing interrupted", e);
    }
  }
예제 #3
0
 @Override
 public void run() {
   try {
     // Create a ConncetionFactory
     ActiveMQConnectionFactory connectionFactory =
         new ActiveMQConnectionFactory("tcp://MSPL-08-09-D158:61616");
     // Create a Connection
     Connection connection = connectionFactory.createConnection();
     connection.start();
     // Create a session
     Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
     // Create the destination (Topic or Queue)
     Destination destination = session.createQueue("HELLOWORLD.TESTQ");
     // Create a MessageProducer from the Session to the Topic or Queue
     MessageConsumer consumer = session.createConsumer(destination);
     Message message = consumer.receive(1000);
     if (message instanceof TextMessage) {
       TextMessage textMessage = (TextMessage) message;
       String text = textMessage.getText();
       System.out.println("Received : " + text);
     } else {
       System.out.println("Received : " + message);
     }
     consumer.close();
     session.close();
     connection.close();
   } catch (Exception e) {
     System.out.println("Error Occure : " + e);
     e.printStackTrace();
   }
 }
예제 #4
0
  public void testConnectionFactory() throws Exception {
    final ActiveMQConnectionFactory cf = new ActiveMQConnectionFactory(connectionUri);
    final ActiveMQQueue queue = new ActiveMQQueue("testqueue");
    final Connection conn = cf.createConnection();

    Runnable r =
        new Runnable() {
          public void run() {
            try {
              Session session = conn.createSession(false, 1);
              MessageConsumer consumer = session.createConsumer(queue, null);
              consumer.receive(1000);
            } catch (JMSException e) {
              e.printStackTrace();
            }
          }
        };
    new Thread(r).start();
    conn.start();

    try {
      synchronized (this) {
        wait(3000);
      }
    } catch (InterruptedException e) {
      e.printStackTrace();
    }
  }
  @Test
  public void testIndexRebuilds() throws Exception {
    IOHelper.deleteFile(schedulerStoreDir);

    JobSchedulerStoreImpl schedulerStore = createScheduler();
    broker = createBroker(schedulerStore);
    broker.start();
    ActiveMQConnectionFactory cf = new ActiveMQConnectionFactory("vm://localhost");
    Connection connection = cf.createConnection();
    connection.start();
    for (int i = 0; i < NUM_JOBS; ++i) {
      scheduleRepeating(connection);
    }
    connection.close();

    JobScheduler scheduler = schedulerStore.getJobScheduler("JMS");
    assertNotNull(scheduler);
    assertEquals(NUM_JOBS, scheduler.getAllJobs().size());

    broker.stop();

    IOHelper.delete(new File(schedulerStoreDir, "scheduleDB.data"));

    schedulerStore = createScheduler();
    broker = createBroker(schedulerStore);
    broker.start();

    scheduler = schedulerStore.getJobScheduler("JMS");
    assertNotNull(scheduler);
    assertEquals(NUM_JOBS, scheduler.getAllJobs().size());
  }
예제 #6
0
  public static void consumeTopic() throws Exception {

    ActiveMQConnectionFactory connectionFactory =
        new ActiveMQConnectionFactory(
            ActiveMQConnectionFactory.DEFAULT_USER,
            ActiveMQConnectionFactory.DEFAULT_PASSWORD,
            ActiveMQConnectionFactory.DEFAULT_BROKER_URL);
    Connection connection = connectionFactory.createConnection();
    connection.setClientID(clientID);
    Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
    Topic topic = session.createTopic(topicName);
    MessageConsumer consumer = session.createDurableSubscriber(topic, topicName);
    consumer.setMessageListener(
        new MessageListener() {
          public void onMessage(Message message) {

            TextMessage m = (TextMessage) message;
            try {
              System.out.println(m.getText());
            } catch (JMSException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
            }
          }
        });
    connection.start();
  }
  public OneToOneReceiver(String topicName, ChatPanel chatPanel) {
    try {
      // Create a ConnectionFactory
      ActiveMQConnectionFactory connectionFactory =
          new ActiveMQConnectionFactory(Constants.ActiveMQConnect);

      // Create a Connection
      Connection connection = connectionFactory.createConnection();
      connection.start();

      // connection.setExceptionListener((ExceptionListener) this);

      // Create a Session
      Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

      // Create the destination (Topic or Queue)
      // Destination destination = session.createQueue("CHAT");
      Topic topic = session.createTopic(topicName);
      // Create a MessageConsumer from the Session to the Topic or Queue
      consumer = session.createConsumer(topic);
      Thread receiverThread = new Thread(this);
      this.chatPanel = chatPanel;
      receiverThread.start();
    } catch (Exception ex) {
      LOG.error(ex);
    }
  }
예제 #8
0
  private static synchronized void initMQConnectionFactory() {

    pool_conn_factory = new PooledConnectionFactory();

    MQConfig config = new MQConfig();

    String url = config.getProperty(MQConfig.ACTIVEMQ_CONN_URL, DEFAULT_URL);

    String user = config.getProperty(MQConfig.ACTIVEMQ_CONN_USER, DEFAULT_USER);

    String passwd = config.getProperty(MQConfig.ACTIVEMQ_CONN_PASSWD, DEFAULT_PASSWORD);

    ActiveMQConnectionFactory activeMQConnFactory =
        new ActiveMQConnectionFactory(user, passwd, url);

    if (Boolean.TRUE
        .toString()
        .equalsIgnoreCase(config.getProperty(MQConfig.ACTIVEMQ_POOL_USE_ASYNCSEND, "false"))) {
      activeMQConnFactory.setUseAsyncSend(true);
    }

    pool_conn_factory.setConnectionFactory(activeMQConnFactory);

    pool_conn_factory.setMaxConnections(
        config.getIntProperty(MQConfig.ACTIVEMQ_POOL_CONN_MAX, "10"));

    // Sets the maximum number of active sessions per connection
    pool_conn_factory.setMaximumActive(
        config.getIntProperty(MQConfig.ACTIVEMQ_POOL_ACTIVE_SESSION_MAX, "200"));

    pool_conn_factory.setIdleTimeout(
        config.getIntProperty(MQConfig.ACTIVEMQ_POOL_IDLETIMEOUT, "30000"));
  }
  @Override
  protected void setUp() throws Exception {
    System.setProperty("javax.net.ssl.trustStore", TRUST_KEYSTORE);
    System.setProperty("javax.net.ssl.trustStorePassword", PASSWORD);
    System.setProperty("javax.net.ssl.trustStoreType", KEYSTORE_TYPE);
    System.setProperty("javax.net.ssl.keyStore", SERVER_KEYSTORE);
    System.setProperty("javax.net.ssl.keyStoreType", KEYSTORE_TYPE);
    System.setProperty("javax.net.ssl.keyStorePassword", PASSWORD);

    broker = new BrokerService();
    broker.setPersistent(false);
    broker.setUseJmx(false);
    TransportConnector connector =
        broker.addConnector("nio+ssl://localhost:0?transport.needClientAuth=true");
    broker.start();
    broker.waitUntilStarted();

    messageData = new byte[MESSAGE_SIZE];
    for (int i = 0; i < MESSAGE_SIZE; i++) {
      messageData[i] = (byte) (i & 0xff);
    }

    ActiveMQConnectionFactory factory =
        new ActiveMQConnectionFactory("nio+ssl://localhost:" + connector.getConnectUri().getPort());
    connection = factory.createConnection();
    session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
    connection.start();
  }
예제 #10
0
 @Override
 protected ConnectionFactory createConnectionFactory() throws URISyntaxException, IOException {
   ActiveMQConnectionFactory factory =
       new ActiveMQConnectionFactory(
           broker.getTransportConnectors().get(0).getServer().getConnectURI());
   factory.setUseAsyncSend(true);
   return factory;
 }
  private static void init() throws JMSException {
    ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(URL);
    connection = connectionFactory.createConnection();
    connection.start();

    session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
    Destination destination = session.createQueue("receive");
    producer = session.createProducer(destination);
  }
 /** Configures the given connection factory */
 public void configure(ActiveMQConnectionFactory factory, MessageActivationSpec activationSpec) {
   if (serverUrl != null) {
     factory.setBrokerURL(serverUrl);
   }
   if (clientid != null) {
     factory.setClientID(clientid);
   }
   if (redeliveryPolicy != null) {
     factory.setRedeliveryPolicy(redeliveryPolicy);
   }
   if (prefetchPolicy != null) {
     factory.setPrefetchPolicy(prefetchPolicy);
   }
   if (factory instanceof ActiveMQSslConnectionFactory) {
     String trustStore =
         defaultValue(
             activationSpec == null ? null : activationSpec.getTrustStore(), getTrustStore());
     String trustStorePassword =
         defaultValue(
             activationSpec == null ? null : activationSpec.getTrustStorePassword(),
             getTrustStorePassword());
     String keyStore =
         defaultValue(activationSpec == null ? null : activationSpec.getKeyStore(), getKeyStore());
     String keyStorePassword =
         defaultValue(
             activationSpec == null ? null : activationSpec.getKeyStorePassword(),
             getKeyStorePassword());
     String keyStoreKeyPassword =
         defaultValue(
             activationSpec == null ? null : activationSpec.getKeyStoreKeyPassword(),
             getKeyStoreKeyPassword());
     ActiveMQSslConnectionFactory sslFactory = (ActiveMQSslConnectionFactory) factory;
     if (trustStore != null) {
       try {
         sslFactory.setTrustStore(trustStore);
       } catch (Exception e) {
         log.warn("Unable to set TrustStore", e);
       }
     }
     if (trustStorePassword != null) {
       sslFactory.setTrustStorePassword(trustStorePassword);
     }
     if (keyStore != null) {
       try {
         sslFactory.setKeyStore(keyStore);
       } catch (Exception e) {
         log.warn("Unable to set KeyStore", e);
       }
     }
     if (keyStorePassword != null) {
       sslFactory.setKeyStorePassword(keyStorePassword);
     }
     if (keyStoreKeyPassword != null) {
       sslFactory.setKeyStoreKeyPassword(keyStoreKeyPassword);
     }
   }
 }
예제 #13
0
 // 初始化
 private void initialize() throws JMSException, Exception {
   ActiveMQConnectionFactory connFac =
       new ActiveMQConnectionFactory(Config.userName, Config.password, Config.brokerURL);
   connection = connFac.createConnection();
   session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
   destination = session.createQueue(Config.queueName);
   producer = session.createProducer(destination);
   producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT); // 设置发送模式
 }
 @Test
 public void testActiveMQOverriddenPoolAndStandalone() {
   load(TestConfiguration.class, "spring.activemq.pooled:true", "spring.activemq.inMemory:false");
   JmsTemplate jmsTemplate = this.context.getBean(JmsTemplate.class);
   PooledConnectionFactory pool = this.context.getBean(PooledConnectionFactory.class);
   assertThat(jmsTemplate).isNotNull();
   assertThat(pool).isNotNull();
   assertThat(pool).isEqualTo(jmsTemplate.getConnectionFactory());
   ActiveMQConnectionFactory factory = (ActiveMQConnectionFactory) pool.getConnectionFactory();
   assertThat(factory.getBrokerURL()).isEqualTo(ACTIVEMQ_NETWORK_URL);
 }
  @Test
  public void testNoSuspendedCallbackOnNoReconnect() throws Exception {

    String uriString =
        "failover://(" + newURI(1) + "," + newURI(2) + ")?randomize=false&maxReconnectAttempts=0";

    ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(uriString);
    final AtomicInteger calls = new AtomicInteger(0);
    connectionFactory.setTransportListener(
        new TransportListener() {
          @Override
          public void onCommand(Object command) {}

          @Override
          public void onException(IOException error) {
            LOG.info("on exception: " + error);
            calls.set(0x01 | calls.intValue());
          }

          @Override
          public void transportInterupted() {
            LOG.info("on transportInterupted");
            calls.set(0x02 | calls.intValue());
          }

          @Override
          public void transportResumed() {
            LOG.info("on transportResumed");
            calls.set(0x04 | calls.intValue());
          }
        });
    Connection connection = connectionFactory.createConnection();
    Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
    Queue destination = session.createQueue("foo");
    MessageProducer producer = session.createProducer(destination);

    final Message message = session.createTextMessage("TEST");
    producer.send(message);

    // clear listener state
    calls.set(0);

    LOG.info("Stopping the Broker1...");
    server1.stop();

    LOG.info("Attempting to send... failover should throw on disconnect");
    try {
      producer.send(destination, message);
      fail("Expect IOException to bubble up on send");
    } catch (javax.jms.IllegalStateException producerClosed) {
    }

    assertEquals("Only an exception is reported to the listener", 0x1, calls.get());
  }
  @Bean
  public ConnectionFactory amqConnectionFactory() {
    CachingConnectionFactory cachingConnectionFactory = new CachingConnectionFactory();
    ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory();
    activeMQConnectionFactory.setBrokerURL("vm://localhost?broker.persistent=false");

    cachingConnectionFactory.setTargetConnectionFactory(activeMQConnectionFactory);
    cachingConnectionFactory.setSessionCacheSize(10);
    cachingConnectionFactory.setCacheProducers(true);
    cachingConnectionFactory.setReconnectOnException(true);
    return cachingConnectionFactory;
  }
예제 #17
0
 private void sendJMSMessageToKickOffRoute() throws Exception {
   ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("vm://testDlq");
   factory.setWatchTopicAdvisories(false);
   Connection connection = factory.createConnection();
   connection.start();
   Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
   MessageProducer producer = session.createProducer(new ActiveMQQueue("fidEtpOrders"));
   TextMessage message = session.createTextMessage("Some Text, messageCount:" + messageCount++);
   message.setJMSCorrelationID("pleaseCorrelate");
   producer.send(message);
   connection.close();
 }
  public void testSlowConnection() throws Exception {

    MockBroker broker = new MockBroker();
    broker.start();

    socketReadyLatch.await();
    int timeout = 1000;
    URI tcpUri =
        new URI(
            "tcp://localhost:"
                + broker.ss.getLocalPort()
                + "?soTimeout="
                + timeout
                + "&trace=true&connectionTimeout="
                + timeout
                + "&wireFormat.maxInactivityDurationInitalDelay="
                + timeout);

    ActiveMQConnectionFactory cf = new ActiveMQConnectionFactory("failover:(" + tcpUri + ")");
    final Connection connection = cf.createConnection();

    new Thread(
            new Runnable() {
              @Override
              public void run() {
                try {
                  connection.start();
                } catch (Throwable ignored) {
                }
              }
            })
        .start();

    int count = 0;
    assertTrue(
        "Transport count: " + count + ", expected <= 1",
        Wait.waitFor(
            new Wait.Condition() {
              @Override
              public boolean isSatisified() throws Exception {
                int count = 0;
                for (Thread thread : Thread.getAllStackTraces().keySet()) {
                  if (thread.getName().contains("ActiveMQ Transport")) {
                    count++;
                  }
                }
                return count == 1;
              }
            }));

    broker.interrupt();
    broker.join();
  }
 @Before
 public void setUp() throws Exception {
   broker = createBroker();
   broker.start();
   ActiveMQConnectionFactory connFactory =
       new ActiveMQConnectionFactory(connector.getConnectUri() + "?jms.prefetchPolicy.all=1000");
   connection = connFactory.createConnection();
   session = connection.createSession(false, Session.CLIENT_ACKNOWLEDGE);
   destination = new ActiveMQQueue("test-queue2");
   producer = session.createProducer(destination);
   connection.start();
 }
 @Test
 public void testActiveMQOverriddenPoolAndRemoteServer() {
   load(
       TestConfiguration.class,
       "spring.activemq.pooled:true",
       "spring.activemq.brokerUrl:tcp://remote-host:10000");
   JmsTemplate jmsTemplate = this.context.getBean(JmsTemplate.class);
   PooledConnectionFactory pool = this.context.getBean(PooledConnectionFactory.class);
   assertThat(jmsTemplate).isNotNull();
   assertThat(pool).isNotNull();
   assertThat(pool).isEqualTo(jmsTemplate.getConnectionFactory());
   ActiveMQConnectionFactory factory = (ActiveMQConnectionFactory) pool.getConnectionFactory();
   assertThat(factory.getBrokerURL()).isEqualTo("tcp://remote-host:10000");
 }
예제 #21
0
  public static void main(String[] args) {

    ActiveMQConnectionFactory connectionFactory =
        new ActiveMQConnectionFactory("admin", "password", BROKER_URL);
    Connection connection = null;

    try {

      connection = connectionFactory.createConnection();
      connection.setClientID("duravel");
      connection.start();

      Session session = connection.createSession(NON_TRANSACTED, Session.AUTO_ACKNOWLEDGE);

      Destination destination;
      MessageProducer producer = null;
      for (int i = 0; i < NUM_MESSAGES_TO_SEND; i++) {

        System.out.println("Sending message #" + i);

        Operacao op = gerarOperacao();
        destination = session.createTopic(op.getDescricao());
        producer = session.createProducer(destination);

        ObjectMessage message = session.createObjectMessage(op);

        swingBasic.start(op);

        producer.send(message);
        Thread.sleep(DELAY);
      }

      producer.send(session.createTextMessage("END"));

      producer.close();
      session.close();

    } catch (Exception e) {
      e.printStackTrace();
    } finally {
      if (connection != null) {
        try {
          connection.close();
        } catch (JMSException e) {
          e.printStackTrace();
        }
      }
    }
  }
예제 #22
0
  public static void main(String[] args) throws JMSException {

    String user = env("ACTIVEMQ_USER", "");
    String password = env("ACTIVEMQ_PASSWORD", "");
    String host = env("ACTIVEMQ_HOST", "localhost");
    int port = Integer.parseInt(env("ACTIVEMQ_PORT", "61616"));
    String destination = arg(args, 0, "foo.bar");

    ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("tcp://" + host + ":" + port);

    Connection connection = factory.createConnection(user, password);
    connection.start();
    Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
    Destination dest = new ActiveMQQueue(destination);

    MessageConsumer consumer = session.createConsumer(dest);
    long start = System.currentTimeMillis();
    long count = 1;
    System.out.println("Waiting for messages...");
    while (true) {
      Message msg = consumer.receive();
      if (msg instanceof TextMessage) {
        String body = ((TextMessage) msg).getText();
        if ("THE.END".equals(body)) {
          long diff = System.currentTimeMillis() - start;
          System.out.println(
              String.format("Received %d in %.2f seconds", count, (1.0 * diff / 1000.0)));
          break;
        } else {
          if (count != msg.getIntProperty("id")) {
            System.out.println("mismatch: " + count + "!=" + msg.getIntProperty("id"));
          }
          count = msg.getIntProperty("id");

          if (count == 0) {
            start = System.currentTimeMillis();
          }
          if (count % 1000 == 0) {
            System.out.println(String.format("Received %d messages.", count));
          }
          count++;
        }

      } else {
        System.out.println("Unexpected message type: " + msg.getClass());
      }
    }
    connection.close();
  }
  /*
   * http://blog.itpub.net/10742815/viewspace-580334/
   */
  public static void main(String[] args) throws Exception {
    ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("vm://localhost");

    Connection connection = factory.createConnection();
    connection.start();

    // 消息发送到这个Queue
    Queue queue = new ActiveMQQueue("testQueue");

    // 消息回复到这个Queue
    Queue replyQueue = new ActiveMQQueue("replyQueue");

    final Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

    // 创建一个消息,并设置它的JMSReplyTo为replyQueue。
    Message message = session.createTextMessage("Andy");
    message.setJMSReplyTo(replyQueue);

    MessageProducer producer = session.createProducer(queue);
    producer.send(message);

    // 消息的接收者
    MessageConsumer comsumer = session.createConsumer(queue);
    comsumer.setMessageListener(
        new MessageListener() {
          public void onMessage(Message m) {
            try {
              // 创建一个新的MessageProducer来发送一个回复消息。
              MessageProducer producer = session.createProducer(m.getJMSReplyTo());
              producer.send(session.createTextMessage("Hello " + ((TextMessage) m).getText()));
            } catch (JMSException e1) {
              e1.printStackTrace();
            }
          }
        });

    // 这个接收者用来接收回复的消息
    MessageConsumer comsumer2 = session.createConsumer(replyQueue);
    comsumer2.setMessageListener(
        new MessageListener() {
          public void onMessage(Message m) {
            try {
              System.out.println(((TextMessage) m).getText());
            } catch (JMSException e) {
              e.printStackTrace();
            }
          }
        });
  }
예제 #24
0
  public static void main(String[] args) {
    String url = BROKER_URL;
    if (args.length > 0) {
      url = args[0].trim();
    }
    System.out.println(
        "\nWaiting to receive messages... will timeout after " + TIMEOUT / 1000 + "s");
    ActiveMQConnectionFactory connectionFactory =
        new ActiveMQConnectionFactory("admin", "password", url);
    Connection connection = null;

    try {

      connection = connectionFactory.createConnection();
      connection.start();

      Session session = connection.createSession(NON_TRANSACTED, Session.AUTO_ACKNOWLEDGE);
      Queue destination = session.createQueue("test-queue?consumer.exclusive=true");
      MessageConsumer consumer = session.createConsumer(destination);

      int i = 0;
      while (true) {
        Message message = consumer.receive(TIMEOUT);

        if (message != null) {
          if (message instanceof TextMessage) {
            String text = ((TextMessage) message).getText();
            System.out.println("Got " + i++ + ". message: " + text);
          }
        } else {
          break;
        }
      }

      consumer.close();
      session.close();

    } catch (Exception e) {
      System.out.println("Caught exception!");
    } finally {
      if (connection != null) {
        try {
          connection.close();
        } catch (JMSException e) {
          System.out.println("Could not close an open connection...");
        }
      }
    }
  }
예제 #25
0
    private synchronized QueueConnection newQueueConnection() throws Exception {

      if (connectionFactory == null) {
        connectionFactory = new ActiveMQConnectionFactory(amqUser, amqPassword, activemqURL);
      }

      // Set the redelivery count to -1 (infinite), or else messages will start dropping
      // after the queue has had a certain number of failures (default is 6)
      RedeliveryPolicy policy = connectionFactory.getRedeliveryPolicy();
      policy.setMaximumRedeliveries(-1);

      QueueConnection amqConnection = connectionFactory.createQueueConnection();
      amqConnection.start();
      return amqConnection;
    }
예제 #26
0
  private void connectToMQ() {
    try {
      ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory(url);
      connection = factory.createConnection();
      session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
      topic = session.createTopic("aseAuctionHouse.auctionWonMessages");

      MessageConsumer consumer = session.createConsumer(topic);
      consumer.setMessageListener(this);

      connection.start();
    } catch (JMSException e) {
      System.out.println("Unable to connect to the MQ Server. Root Cause (" + e.getMessage() + ")");
    }
  }
예제 #27
0
  public void startConsumer() {
    try {
      connection = connectionFactory.createConnection();
      connection.start();
      session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
      Destination destination = null;
      if ("topic".equalsIgnoreCase(destinationType)) {
        destination = session.createTopic(destinationName);
      } else {
        destination = session.createQueue(destinationName);
      }

      consumer = session.createConsumer(destination);
      isStarted.compareAndSet(false, true);
      while (true) {
        Message message = consumer.receive();

        if (message instanceof TextMessage) {
          TextMessage textMessage = (TextMessage) message;
          String text = textMessage.getText();
          // System.out.println("Received: " + text);
          counter.incrementAndGet();
          if (isRecording.get()) {
            addData(message, text);
          }
        }
      }

    } catch (Exception e) {
      // e.printStackTrace();
    } finally {
      terminate();
    }
  }
예제 #28
0
  static {
    try {
      // Create a ConnectionFactory
      String brokerUrl = System.getProperty("amq.broker.url", "vm://localhost");
      ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(brokerUrl);

      // Create a Connection
      connection = connectionFactory.createConnection();
      connection.start();

      sessionPool = new StackKeyedObjectPool(new SessionKeyedObjectPoolFactory());
      producerPool = new StackKeyedObjectPool(new ProducerKeyedObjectPoolFactory());
    } catch (JMSException e) {
      throw new RuntimeException(e);
    }
  }
  @Override
  public void setUp() throws Exception {

    brokerService = createBroker();

    ActiveMQConnectionFactory activeMQConnectionFactory =
        new ActiveMQConnectionFactory("vm://localhost");

    activeMQConnectionFactory.setWatchTopicAdvisories(true);
    connection = activeMQConnectionFactory.createConnection();
    session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
    destination = new ActiveMQTopic(TOPIC_NAME);
    producer = session.createProducer(destination);

    connection.start();
  }
예제 #30
0
  @Override
  public void reconnect() {
    int numTries = 0;
    int pauseInMs = 100;
    boolean connected = false;

    if (connectionFactory == null) {
      logger.warn("Asked to reconnect to AMQ but no connectionFactory was configured!");
      return;
    }

    synchronized (connectionMonitor) {
      close();
      while (!connected) {
        numTries++;
        try {
          connection = connectionFactory.createTopicConnection();
          connection.start();
          connected = true;
        } catch (JMSException ex) {
          logger.warn("Got error while trying to connect to activemq");
          try {
            Thread.sleep((long) pauseInMs);
          } catch (InterruptedException innerEx) {
            Thread.currentThread().interrupt();
            return;
          }
          if (numTries < 10) {
            pauseInMs += pauseInMs;
          }
        }
      }
    }
  }