Skip to content

Commit c09315c

Browse files
committed
fix: 解决 RabbitMQ 多数据源声明同名交换机判断 delay 时 toMap 冲突
1 parent d0002da commit c09315c

File tree

1 file changed

+5
-4
lines changed
  • common/plugin/mq/src/main/java/com/github/cadecode/uniboot/common/plugin/mq/rabbit

1 file changed

+5
-4
lines changed

common/plugin/mq/src/main/java/com/github/cadecode/uniboot/common/plugin/mq/rabbit/RabbitCallback.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ public class RabbitCallback implements ConfirmCallback, ReturnsCallback, Initial
3232
/**
3333
* 交换机名称映射
3434
*/
35-
private Map<String, Exchange> exchangeNameMap;
35+
private Map<String, List<Exchange>> exchangeNameMap;
3636

3737
private final List<Exchange> exchanges;
3838

@@ -75,11 +75,12 @@ public void returnedMessage(ReturnedMessage returned) {
7575
*/
7676
private boolean isExchangeDelayed(String exchangeName) {
7777
if (ObjUtil.isEmpty(exchangeNameMap)) {
78-
exchangeNameMap = exchanges.stream().collect(Collectors.toMap(Exchange::getName, o -> o));
78+
exchangeNameMap = exchanges.stream().collect(Collectors.groupingBy(Exchange::getName, Collectors.toList()));
7979
}
8080
// 若是 delay 交换机
81-
Exchange exchange = exchangeNameMap.get(exchangeName);
82-
return ObjUtil.isNotNull(exchange) && (exchange.isDelayed() || RabbitConst.EXC_TYPE_DELAYED.equals(exchange.getType()));
81+
List<Exchange> exchangeList = exchangeNameMap.get(exchangeName);
82+
return exchangeList.stream()
83+
.allMatch(exchange -> ObjUtil.isNotNull(exchange) && (exchange.isDelayed() || RabbitConst.EXC_TYPE_DELAYED.equals(exchange.getType())));
8384
}
8485

8586
@Override

0 commit comments

Comments
 (0)