我有很长一段时间处于SENDING DATA状态的查询.有人可以帮我这个:下面是详细信息
Mysql查询:
select a.msgId,a.senderId,a.destination,a.inTime,a.status as InStatus,b.status as SubStatus,c.deliverTime,substr(c.receipt,82,7) as DlvStatus
from inserted_history a left join submitted_history b on b.msgId = a.msgId left join delivered_history c on a.msgId = c.msgId
where a.inTime between '2010-08-10 00:00:00' and '2010-08-010 23:59:59' and a.systemId='ND_arber'
Run Code Online (Sandbox Code Playgroud)
总记录在delivered_history:223870168
总记录在inserted_history:264817239
总记录在submitted_history:226637058
解释查询返回:
id , select_type , table , type , possible_keys , key , key_len , ref , rows , Extra
1 , SIMPLE , a …Run Code Online (Sandbox Code Playgroud) 我是HornetQ的新手所以请耐心等待.我先告诉你我的要求:
我需要一个消息排队中间件,它可以在不同进程之间传递大小约1k的消息,具有低延迟和持久性(即它应该能够在系统崩溃中存活).我将有多个进程写入相同的队列,同样多个进程从同一队列中读取.
为此,我选择了HornetQ,因为它具有持久性消息传递的最佳评级.
我目前使用Hornetq v2.2.2Final作为独立服务器.
我能够使用核心api (ClientSession)成功创建持久/非持久队列,并成功将消息发布到队列(ClientProducer).
同样,我可以使用核心API (ClientConsumer)从队列中读取消息.
在此之后问题出现时,客户端已读取消息,消息仍保留在队列中,即队列中的消息数保持不变.也许我弄错了但是我的印象是,一旦消息被消耗 (读取+确认),它就会从队列中删除.但这种情况在我的情况下并没有发生,并且正在反复阅读相同的消息再次.
此外,我想告诉我,我已经尝试使用非持久性队列和非持久性消息.但问题仍然存在.
我正在使用的生产者代码:
public class HQProducer implements Runnable {
private ClientProducer producer;
private boolean killme;
private ClientSession session;
private boolean durableMsg;
public HQProducer(String host, int port, String address, String queueName,
boolean deleteQ, boolean durable, boolean durableMsg, int pRate) {
this.durableMsg = durableMsg;
try {
HashMap map = new HashMap();
map.put("host", host);
map.put("port", port);
TransportConfiguration config = new …Run Code Online (Sandbox Code Playgroud)