Java JMS方式测试连接TongLinkQ

应国产化需求需要,需将系统中涉及的各中间件替换成国产中间件,此文介绍了用jms方式测试TongLink/Q收发消息(注:如果需要springboot2.x的整合代码关注后私我)

准备:jar包

TongJMS.jar  (可以私信找我要)

1. 把该jar包安装到本地maven仓库

mvn install:install-file -Dfile=D:\project\国产化\东方通\TongLinkQ\springboot2\demo1\lib\TongJMS.jar  -DgroupdId=com.tongtech -DartifactId=tongjms  -Dversion=1.0.0 -Dpackaging=jar

2.添加maven依赖配置

<dependency>

   <groupId>com.tongtech</groupId>

   <artifactId>tongjms</artifactId>

   <version>1.0.0</version>

</dependency>

<dependency>

   <groupId>org.springframework</groupId>

   <artifactId>spring-jms</artifactId>

   <version>5.2.25.RELEASE</version>

</dependency>

<dependency>

   <groupId>javax.jms</groupId>

   <artifactId>javax.jms-api</artifactId>

   <version>2.0.1</version>

</dependency>

3.编写发接收端代码 RecvWithoutJNDI.java

import java.io.ByteArrayOutputStream;
import java.text.SimpleDateFormat;

import javax.jms.BytesMessage;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.JMSException;
import javax.jms.MapMessage;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.MessageProducer;
import javax.jms.ObjectMessage;
import javax.jms.Queue;
import javax.jms.QueueConnectionFactory;
import javax.jms.Session;
import javax.jms.StreamMessage;
import javax.jms.TextMessage;

public class RecvWithoutJNDI {
public static byte[] readBytesContent(Message msg) {
byte[] buf;
int len;
ByteArrayOutputStream content;
BytesMessage message = (BytesMessage) msg;
buf = new byte[1024];

try {
content = new ByteArrayOutputStream();
while ((len = message.readBytes(buf)) > 0) {
content.write(buf, 0, len);
}
return content.toByteArray();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static void main(String[] args) {
String IP = null;
int port = 0;
String QueName = null;
/**
if(args.length < 3)
{
System.out.println("java RecvWithoutJNDI IP Port QueName");
return;
}
IP = args[0];
port = Integer.parseInt(args[1]);
QueName = args[2];
*/
IP = "ip";
port = 10024;
QueName = "lq";
com.tongtech.tmqi.ConnectionFactory connectionFactory = null;
Connection conn = null;
Session session = null;
String url = "tlq://"+IP+":" +port;
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
System.out.println("url==>" + url);
try {
long millis = System.currentTimeMillis();
connectionFactory = new com.tongtech.tmqi.ConnectionFactory();

//connectionFactory.setTmqiAddressList(url);
connectionFactory.setProperty("tmqiAddressList", url);
conn = connectionFactory.createConnection();
session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);

Queue myQueue = new com.tongtech.tmqi.Queue(QueName);
System.out.println("QueName==>" + QueName);
MessageProducer producer = session.createProducer(myQueue);
long conn_end_time = System.currentTimeMillis();
System.out.println(df.format(System.currentTimeMillis())+ " createProducer OK");
System.out.println(df.format(System.currentTimeMillis()) + " createConnection use:" + (conn_end_time - millis) + "ms");
MessageConsumer consumer = session.createConsumer(myQueue);
System.out.println(df.format(System.currentTimeMillis())+ " createConsumer OK");
conn.start();
System.out.println(df.format(System.currentTimeMillis())+ " conn.start OK");
while(true)
{
System.out.println(df.format(System.currentTimeMillis())+ " before consumer.receive");
Message message = consumer.receive(50000);
System.out.println(df.format(System.currentTimeMillis())+ " after consumer.receive");
if( message == null)
{
continue;
}
if(message instanceof ObjectMessage){
if(message!=null)
{
ObjectMessage msg = (ObjectMessage)message;
/* Let's process the ObjectMessage */
System.out.println(df.format(System.currentTimeMillis())+" Received ObjectMessage.");
}
}else if(message instanceof BytesMessage){
if(message!=null)
{
/* Let's process the BytesMessage */
System.out.println(df.format(System.currentTimeMillis())+" Received BytesMessage.");
BytesMessage bm = (BytesMessage) message;
byte[] Msg = null;
int dataLength = (int) bm.getBodyLength();
try {
Msg = new byte[dataLength];
bm.readBytes(Msg);
System.out.println(df.format(System.currentTimeMillis())+" MsgContent is :" + new String(Msg));
}catch (Exception ex)
{
ex.printStackTrace();
}
}
}else if (message instanceof TextMessage){
if(message!=null)
{
TextMessage txtmsg = (TextMessage)message;
/* Let's process the TextMessage */
String txtstr = txtmsg.getText();
System.out.println(df.format(System.currentTimeMillis())+" Received TextMessage:"+txtstr);
}
}else if(message instanceof MapMessage){
if(message!=null)
{
MapMessage mapmsg = (MapMessage)message;
/* Let's process the MapMessage */
System.out.println(df.format(System.currentTimeMillis())+" Received MapMessage.");
}
}else if(message instanceof StreamMessage){
if(message!=null)
{
StreamMessage strmmsg = (StreamMessage)message;
/* Let's process the StreamMessage */
System.out.println(df.format(System.currentTimeMillis())+" Recieved StreamMessage.");
}
}
}
} catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
if (session != null) {
session.close();
}
if (conn != null) {
conn.close();
}
} catch (Exception e) {
System.out.println("ERROR: " + e.getMessage());
e.printStackTrace();
}
}
}

}

4.编写发送端代码

import java.text.SimpleDateFormat;
import javax.jms.Connection;
import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.TextMessage;
import com.tongtech.tmqi.*;

public class SendJMSWithoutJNDI_nolog {
static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSS");
public static void main(String[] args) {
ConnectionFactory connectionFactory = null;
Connection conn = null;
Session session = null;
String IP = null;
int port = 0;
String url = "tlq://ip:10024";
String QueName = "lq";
// if(args.length < 3)
// {
// System.out.println("java SendJMSWithoutJNDI_nolog IP Port QueName");
// return;
// }
//
// IP = args[0];
// port = Integer.parseInt(args[1]);
// QueName = args[2];
//
//
// url ="tlq://"+IP +":"+port;
try {
long millis = System.currentTimeMillis();
connectionFactory = ConnectionFactory(url);

//connectionFactory.setTmqiAddressList(url);
connectionFactory.setProperty("tmqiAddressList", url);
System.out.println(sdf.format(System.currentTimeMillis())
+ " | tmqiAddressList " + url + " OK!");
conn = connectionFactory.createConnection();
System.out.println(sdf.format(System.currentTimeMillis())
+ " | createConnection " + " OK!");
session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
System.out.println(sdf.format(System.currentTimeMillis())
+ " | createSession " + " OK!");
Queue myQueue = new com.tongtech.tmqi.Queue(QueName);
MessageProducer producer = session.createProducer(myQueue);
System.out.println(sdf.format(System.currentTimeMillis())
+ " | createProducer on "+ QueName + " OK!");
StringBuilder strb = new StringBuilder();

for(int i = 0; i< 2048;i++)
{
strb.append('a');
}
TextMessage msg = session.createTextMessage();
msg.setText(strb.toString());
System.out.println(sdf.format(System.currentTimeMillis())
+ " | Before producer.send ");
producer.send(msg);
System.out.println(sdf.format(System.currentTimeMillis())
+ " | producer.send msg to Queue ["+ QueName + "] OK! Msgid="+ new String(msg.getJMSMessageID()) );
} catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
if (session != null) {
session.close();
System.out.println(sdf.format(System.currentTimeMillis())
+ " | session.close " + " OK");
}
if (conn != null) {
conn.close();
System.out.println(sdf.format(System.currentTimeMillis())
+ " | conn.close() " + " OK");
}
} catch (Exception e) {
System.out.println("ERROR: " + e.getMessage());
e.printStackTrace();
}
}
}

private static ConnectionFactory ConnectionFactory(String url) {
ConnectionFactory connectionFactory = new ConnectionFactory();
return connectionFactory;
}

}

5. 测试

    先启动接收端,再运行发送端,控制台即可看到打印的消息内容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值