# stomp-client
**Repository Path**: ohun/stomp-client
## Basic Information
- **Project Name**: stomp-client
- **Description**: stomp client for java base netty
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 2
- **Forks**: 2
- **Created**: 2016-08-26
- **Last Updated**: 2021-11-17
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
## A stomp client base on netty.
### Subscribe:
```java
public class StompSubscribeTest {
@Test
public void testSub() throws Exception {
StompClientManager stompClientManager = new StompClientManager();
stompClientManager.connect("stomp://username:password@host:port");
stompClientManager.createConsumer("/topic/logon")
.id("wqteam_test")
.ackMode(AckMode.AUTO)
.handler(new MessageHandler() {
@Override
public void onMessage(Message message) {
System.out.println(message);
}
})
.subscribe();
LockSupport.park();
}
}
```
### Sender:
```java
public class StompSenderTest {
@Test
public void testSend() throws Exception {
StompClientManager stompClientManager = new StompClientManager();
stompClientManager.connect("stomp://username:password@10.232.136.85:61613");
MessageProducer producer = stompClientManager.createProducer("/topic/logon3");
for (int i = 0; i < 100; i++) {
if (i > 5) {
StompTransaction tx = producer.begin();
Thread.sleep(1000);
tx.send(i + "风格的歌");
tx.abort();
} else {
producer.send(i + "大苏打");
}
try {
ReceiptFuture future = producer.sendW((i + "大苏打").getBytes("UTF-8"));
future.await();
} catch (Exception e) {
e.printStackTrace();
}
}
LockSupport.park();
}
}
```
### For Spring:
```xml
```
```java
public class WX2PublicMsgListener implements MessageHandler {
@Resource
private StompClientManager stompClientManager;
public void init() {
this.executor = newExecutor();
MessageConsumer consumer = stompClientManager.createConsumer(topic);
consumer.id(clientId).executor(executor).handler(this).subscribe();
}
@Override
public void onMessage(final Message message) {
logger.error(message.getTextBody())
}
public void destroy() throws Exception {
executor.shutdown();
}
private ThreadPoolExecutor newExecutor() {
final ThreadFactory threadFactory = new BasicThreadFactory.Builder()
.daemon(true).namingPattern("wx-2-pub-%d").build();
return new ThreadPoolExecutor(2, poolSize, 5L, TimeUnit.MINUTES,
new LinkedBlockingQueue(queueSize),
threadFactory,
new RejectedExecutionHandler() {
@Override
public void rejectedExecution(Runnable r, ThreadPoolExecutor e) {
logger.warn("one message task was rejected total="
+ rejectedCount.incrementAndGet()
+ ",poolStatus=" + poolStatus());
}
});
}
private final Logger logger = LoggerFactory.getLogger(WX2PublicMsgListener.class);
private AtomicInteger rejectedCount = new AtomicInteger(0);
private int poolSize = 10, queueSize = 100;
private ThreadPoolExecutor executor;
private String topic;
private String clientId;
}
```