我有一条原型消息
Item.proto:
Message SetItemThing {
required string id;
}
CreateTableListener:
public void onMessage(SetItemThing msg) {
// Creates a table to put items in
}
CreateItemInTableListener:
public void onMessage(SetItemThing msg) {
// Puts item in a table that is going to be created
}
我想确保CreateTableListener函数在CreateItemInTableListener之前运行。因为他们得到相同的消息我想知道是否有办法强制CreateTableListener先运行?
如果没有,那么获得所需功能的最佳方法是什么? 我正在考虑制作另一条消息并将其发送给不同的时间,但即使我这样做,我也希望在应用程序的启动阶段发送这些消息,这样我仍然可以解决没有首先使用CreateTableListener的问题。 / p>
答案 0 :(得分:0)
创建一个包装器。第一个接收器接收包装器,它检查包装器包含的内容。如果它包含create table操作,则执行。如果它包含创建项操作,它只会触发unwraps并将其激活。第二个侦听器仅侦听第二个操作。 akka框架使用了一些类似的概念。它有主管活动和儿童活动。如果孩子可以执行任务,则执行该任务,如果它不知道如何处理该消息,则将其返回给主管。然后主管将其发送到下一个活动。最终知道如何处理它的人会处理它。
答案 1 :(得分:0)
我不明白为什么消息应该触发数据库表创建事件,但无论如何。
如果您希望异步消息触发一系列操作,请先将消息传递给第1步,然后将其传递给第2步。您可以通过创建只有第2步将侦听的另一个队列来完成此操作。