如果我们使用JMS来处理实时消息,例如,实时股价信息,如何使其在设计中表现最佳和可靠?例如,应该使用队列还是主题?如果消息到达,它应该首先保存到数据库....,我们需要使用transcation吗?
如果此代码可以实现
public void onMessage(Message msg) {
final long currentTime = System.currentTimeMillis();
Thread timer = new Thread(new Runnable(){
@Override
public void run() {
while(true){
if((System.currentTimeMillis()-currentTime)>processTimeLimit){
// send message back to server, processing time is over the limit
break;
}
}
}
});
timer.start();
Thread t = new Thread(new Runnable(){
@Override
public void run() {
// save to db
}});
t.start();
}
由于
答案 0 :(得分:0)
您的消息传递的性能不是由JMS层决定的,而是由底层实现决定的。例如。 WebSphere MQ,Tibco EMS,Apache ActiveMQ,Oracle AQ等
如果您希望仅发送给一个收件人(即进程),则应使用队列,但如果您希望让许多收件人读取每封邮件的副本,则使用主题。这是一个设计问题。
如果在处理邮件之前丢失邮件会对您的应用程序造成不利影响,则需要进行交易。或者如果有半处理的消息是有害的。在大多数情况下,您需要使用交易。