我需要在通过service-activator调用的方法中传递参数。我可以在header-richer的帮助下成功完成此操作。下面是工作代码段。
<int:chain input-channel="inChannel">
<int:header-enricher>
<int:header name="routeName" value="TestRoute" />
</int:header-enricher>
<int:service-activator ref="customLoggingRoute"
method="logRoute">
</int:service-activator>
</int:chain>
public Message logRoute(Message m, @Header("routeName") String routeName) {
System.out.println("Inside route: " + routeName);
return m;
}
但是我不想在标题中添加任何内容。有没有其他方法可以使我们在没有header-enricher的情况下完成同样的事情。
答案 0 :(得分:0)
不,没有。调用者的Spring Integration合同是Messaging。因此,当我们之间只有一条消息时,我们无能为力。您可以拥有一个复杂的import random
def queensol(n):
"""Find the number of solutions to placing Queens on a chessboard of size n"""
size = n
rng = random.Random()
tries = 0
bd = list(range(size))
soln = []
while True:
tries += 1
rng.shuffle(bd)
correct = 0
for queen_index in range(size):
if queen_noclash(bd, queen_index):
correct += 1
board_valid = correct == size
if board_valid:
if bd not in soln:
soln.append(list(bd))
print(soln)
def no_diagonal(x1, y1, x2, y2):
dx = abs(x1-x2)
dy = abs(y1-y2)
# print('dx',dx)
# print('dy',dy)
if dx == dy:
return False
else:
return True
def queen_noclash(bd, queen):
correct = 0
for left_queen in range(queen):
left_queen_x = left_queen
left_queen_y = bd[left_queen]
queen_x = queen
queen_y = bd[queen]
if no_diagonal(left_queen_x, left_queen_y, queen_x, queen_y):
correct += 1
if correct == queen:
return True
else:
return False
queensol(4)
对象并通过它传输数据,也可以将数据移到标题中。
当然,您可以考虑使用payload
,因为我们使用的是Java语言,并且您的流程位于同一线程中,但这会产生一些开销。
我认为您需要从消息传递理论入手,并在了解所有这些限制后回到我们身边。