我遇到一种情况,我从总线收到一条消息,并且(由于遗留代码)执行的代码可能需要10分钟才能运行(请不要打扰我这是所有第三方WCF呼叫)。
这里的问题是消息锁定不能超过5分钟我想(并且有充分的理由)所以,我正在考虑获取消息,对其进行反序列化,检查它是否会长时间运行,如果是这样,用Completed
方法将其标记为“已完成”。
现在,客户的内部发挥作用。为了避免线程饥饿,我不想:
Completed
随着越来越多的消息到达处理,这显然会导致线程饥饿。
所以我想知道的是,如果发生以下情况
Completed
这似乎是合乎逻辑的,但有人知道,当我说这条消息是library(data.table)
setDT(df)[,.(day_time = max(Day_and_Time),
rain1_sum=sum(rain1),
rain2_sum=sum(rain2)),
by=.(floor(as.numeric(Day_and_Time)/360))]
floor day_time rain1_sum rain2_sum
1: 3516540 2010-02-12 01:05:00 0.19 0.10
2: 3516541 2010-02-12 01:10:00 0.43 0.21
时,下一条消息是否会到达,或者客户端是否会等待此客户端线程退出(即使消息标记为df <- structure(list(Day_and_Time = structure(c(1265954400, 1265954460,
1265954520, 1265954580, 1265954640, 1265954700, 1265954760, 1265954820,
1265954880, 1265954940, 1265955000), class = c("POSIXct", "POSIXt"
), tzone = ""), rain1 = c(0.03, 0.03, 0.01, 0.05, 0.03, 0.04,
0.02, 0.1, 0.3, 0.01, 0), rain2 = c(0, 0, 0, 0, 0.1, 0, 0.1,
0.1, 0, 0, 0.01)), .Names = c("Day_and_Time", "rain1", "rain2"
), row.names = c(NA, -11L), class = c("data.table", "data.frame"
), .internal.selfref = <pointer: 0x0000000000240788>)
现在可以被认为是在处理下一个消息之前没有处理消息吗?