Merge branch 'dev-lyhfive' of http://git.buggoglobal.com/java-project/baiyue-firstleg into dev
This commit is contained in:
+1
@@ -30,6 +30,7 @@ public class EventBridgeMetrics {
|
||||
EventTypes.FIRST_LEG_LOADING_PLAN_COMPLETED,
|
||||
EventTypes.FIRST_LEG_CONTAINER_SHIPPING_NODE_RECORDED,
|
||||
EventTypes.OVERSEAS_CONTAINER_UNLOADED,
|
||||
EventTypes.OVERSEAS_INBOUND_ORDER_DETAINED_CHANGED,
|
||||
EventTypes.IAM_USER_STATUS_CHANGED,
|
||||
EventTypes.IAM_TENANT_STATUS_CHANGED,
|
||||
EventTypes.IAM_PERMISSION_VERSION_CHANGED,
|
||||
|
||||
+5
-1
@@ -31,10 +31,14 @@ public class EventInboxService {
|
||||
@Value("${baiyue.region:CN}")
|
||||
private String localRegion;
|
||||
|
||||
/** Local single-bridge mode may carry both regional envelopes; production keeps strict routing. */
|
||||
@Value("${baiyue.event-bridge.accept-any-region:false}")
|
||||
private boolean acceptAnyRegion;
|
||||
|
||||
@Transactional
|
||||
public EventReceiveResult receive(EventEnvelope envelope) {
|
||||
envelope.requireValid();
|
||||
if (!envelope.targetRegion().name().equalsIgnoreCase(localRegion)) {
|
||||
if (!acceptAnyRegion && !envelope.targetRegion().name().equalsIgnoreCase(localRegion)) {
|
||||
throw new IllegalArgumentException("事件目标区域与当前事件桥区域不一致");
|
||||
}
|
||||
if (!EventPayloadHash.matches(
|
||||
|
||||
@@ -29,7 +29,7 @@ spring:
|
||||
namespace: ${NACOS_NAMESPACE:}
|
||||
|
||||
baiyue:
|
||||
region: ${REGION_CODE:OVERSEAS}
|
||||
region: ${REGION_CODE:CN}
|
||||
event-dispatcher:
|
||||
consumer-url: ${EVENT_CONSUMER_URL:${LASTLEG_CONSUMER_URL:http://127.0.0.1:9303/internal/lastleg/events}}
|
||||
firstleg-consumer-url: ${FIRSTLEG_CONTAINER_EVENT_CONSUMER_URL:http://127.0.0.1:9202/internal/firstleg/v1/container-events}
|
||||
|
||||
+14
@@ -151,6 +151,15 @@ class EventInboxServiceTest {
|
||||
.hasMessageContaining("目标区域");
|
||||
}
|
||||
|
||||
@Test
|
||||
void 本地单实例模式允许接收不同目标区域事件() {
|
||||
EventInboxService localService = service("CN", true);
|
||||
EventEnvelope envelope = withHash(envelope("sha256:placeholder"));
|
||||
|
||||
assertThat(localService.receive(envelope).result()).isEqualTo("已接收");
|
||||
verify(store).insert(any(BridgeInbox.class));
|
||||
}
|
||||
|
||||
private EventEnvelope envelope(String hash) {
|
||||
return new EventEnvelope("550e8400-e29b-41d4-a716-446655440000", "OrderApproved", 1,
|
||||
Instant.parse("2026-07-29T08:30:00Z"), RegionCode.CN, RegionCode.OVERSEAS,
|
||||
@@ -159,11 +168,16 @@ class EventInboxServiceTest {
|
||||
}
|
||||
|
||||
private EventInboxService service(String region) {
|
||||
return service(region, false);
|
||||
}
|
||||
|
||||
private EventInboxService service(String region, boolean acceptAnyRegion) {
|
||||
EventInboxService service = new EventInboxService();
|
||||
ReflectionTestUtils.setField(service, "inboxStore", store);
|
||||
ReflectionTestUtils.setField(service, "objectMapper", objectMapper);
|
||||
ReflectionTestUtils.setField(service, "metrics", metrics);
|
||||
ReflectionTestUtils.setField(service, "localRegion", region);
|
||||
ReflectionTestUtils.setField(service, "acceptAnyRegion", acceptAnyRegion);
|
||||
return service;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user