How to Receive a Message from an Apache ActiveMQ Topic with the Java API for WebSocket

W/o Durability

SampleActiveMQEndpoint.java

import static java.lang.System.out;

import java.io.IOException;

import javax.websocket.ClientEndpoint;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.RemoteEndpoint;
import javax.websocket.Session;

@ClientEndpoint
public final class SampleActiveMQEndpoint {

  @OnMessage
  public void onMessage(final String msg) {

    if (msg.startsWith("MESSAGE"))
      out.println(msg);

  }

  @OnOpen
  public void onOpen(final Session sess) throws IOException {
    final RemoteEndpoint.Basic remote = sess.getBasicRemote();

    remote.sendText("CONNECT\n\n\0");

    remote.sendText("SUBSCRIBE\ndestination:/topic/SampleTopic\n\nack:auto\n\n0");

    remote.sendText("DISCONNECT\n\n\0");
  }

}

W/ Durability

SampleActiveMQEndpoint.java

import static java.lang.System.out;

import java.io.IOException;

import javax.websocket.ClientEndpoint;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.RemoteEndpoint;
import javax.websocket.Session;

@ClientEndpoint
public final class SampleActiveMQEndpoint {

  @OnMessage
  public void onMessage(final String msg) {

    if (msg.startsWith("MESSAGE"))
      out.println(msg);

  }

  @OnOpen
  public void onOpen(final Session sess) throws IOException {
    final RemoteEndpoint.Basic remote = sess.getBasicRemote();

    remote.sendText("CONNECT\nclient-id:SampleClient\n\n\0");

    remote.sendText("SUBSCRIBE\ndestination:/topic/SampleTopic\n\nack:auto\nactivemq.subscriptionName:SampleSubscription\n\n\0");

    remote.sendText("DISCONNECT\n\n\0");
  }

}

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s