enable mq outbox defaults
This commit is contained in:
parent
3eabd78808
commit
5d2c39f8db
@ -15,7 +15,7 @@ wallet_service_addr: "wallet-service:13004"
|
|||||||
room_service_addr: "room-service:13001"
|
room_service_addr: "room-service:13001"
|
||||||
mysql_auto_migrate: true
|
mysql_auto_migrate: true
|
||||||
first_recharge_reward_worker:
|
first_recharge_reward_worker:
|
||||||
enabled: false
|
enabled: true
|
||||||
cumulative_recharge_reward_worker:
|
cumulative_recharge_reward_worker:
|
||||||
enabled: true
|
enabled: true
|
||||||
red_packet_broadcast_worker:
|
red_packet_broadcast_worker:
|
||||||
|
|||||||
@ -39,6 +39,7 @@ tencent_im:
|
|||||||
admin_user_sig_ttl: "24h"
|
admin_user_sig_ttl: "24h"
|
||||||
endpoint: "adminapisgp.im.qcloud.com"
|
endpoint: "adminapisgp.im.qcloud.com"
|
||||||
group_type: "ChatRoom"
|
group_type: "ChatRoom"
|
||||||
|
group_id_prefix: ""
|
||||||
request_timeout: "5s"
|
request_timeout: "5s"
|
||||||
broadcast:
|
broadcast:
|
||||||
enabled: true
|
enabled: true
|
||||||
|
|||||||
@ -15,11 +15,11 @@ wallet_service_addr: "127.0.0.1:13004"
|
|||||||
room_service_addr: "127.0.0.1:13001"
|
room_service_addr: "127.0.0.1:13001"
|
||||||
mysql_auto_migrate: true
|
mysql_auto_migrate: true
|
||||||
first_recharge_reward_worker:
|
first_recharge_reward_worker:
|
||||||
enabled: false
|
enabled: true
|
||||||
cumulative_recharge_reward_worker:
|
cumulative_recharge_reward_worker:
|
||||||
enabled: false
|
enabled: true
|
||||||
red_packet_broadcast_worker:
|
red_packet_broadcast_worker:
|
||||||
enabled: false
|
enabled: true
|
||||||
lucky_gift_worker:
|
lucky_gift_worker:
|
||||||
enabled: true
|
enabled: true
|
||||||
worker_poll_interval: "1s"
|
worker_poll_interval: "1s"
|
||||||
@ -39,6 +39,7 @@ tencent_im:
|
|||||||
admin_user_sig_ttl: "24h"
|
admin_user_sig_ttl: "24h"
|
||||||
endpoint: "adminapisgp.im.qcloud.com"
|
endpoint: "adminapisgp.im.qcloud.com"
|
||||||
group_type: "ChatRoom"
|
group_type: "ChatRoom"
|
||||||
|
group_id_prefix: ""
|
||||||
request_timeout: "5s"
|
request_timeout: "5s"
|
||||||
broadcast:
|
broadcast:
|
||||||
enabled: true
|
enabled: true
|
||||||
@ -49,28 +50,28 @@ broadcast:
|
|||||||
worker_max_retry: 8
|
worker_max_retry: 8
|
||||||
ensure_groups_on_startup: true
|
ensure_groups_on_startup: true
|
||||||
rocketmq:
|
rocketmq:
|
||||||
# 本地默认关闭,room-service 直接 gRPC 投递 activity;开启后消费 room_outbox MQ fanout。
|
# 本地默认走 RocketMQ fanout,和 Docker/testbox/线上保持同一条 outbox 链路。
|
||||||
enabled: false
|
enabled: true
|
||||||
name_servers: []
|
name_servers: ["127.0.0.1:19876"]
|
||||||
name_server_domain: ""
|
name_server_domain: ""
|
||||||
access_key: ""
|
access_key: ""
|
||||||
secret_key: ""
|
secret_key: ""
|
||||||
namespace: ""
|
namespace: ""
|
||||||
room_outbox:
|
room_outbox:
|
||||||
enabled: false
|
enabled: true
|
||||||
topic: "hyapp_room_outbox"
|
topic: "hyapp_room_outbox"
|
||||||
consumer_group: "hyapp-activity-room-outbox"
|
consumer_group: "hyapp-activity-room-outbox"
|
||||||
consumer_max_reconsume_times: 16
|
consumer_max_reconsume_times: 16
|
||||||
wallet_outbox:
|
wallet_outbox:
|
||||||
enabled: false
|
enabled: true
|
||||||
topic: "hyapp_wallet_outbox"
|
topic: "hyapp_wallet_outbox"
|
||||||
realtime_topic: ""
|
realtime_topic: "hyapp_wallet_realtime_outbox"
|
||||||
first_recharge_consumer_group: "hyapp-activity-first-recharge-wallet-outbox"
|
first_recharge_consumer_group: "hyapp-activity-first-recharge-wallet-outbox"
|
||||||
cumulative_recharge_consumer_group: "hyapp-activity-cumulative-recharge-wallet-outbox"
|
cumulative_recharge_consumer_group: "hyapp-activity-cumulative-recharge-wallet-outbox"
|
||||||
red_packet_broadcast_consumer_group: "hyapp-activity-red-packet-wallet-outbox"
|
red_packet_broadcast_consumer_group: "hyapp-activity-red-packet-wallet-outbox"
|
||||||
consumer_max_reconsume_times: 16
|
consumer_max_reconsume_times: 16
|
||||||
user_outbox:
|
user_outbox:
|
||||||
enabled: false
|
enabled: true
|
||||||
topic: "hyapp_user_outbox"
|
topic: "hyapp_user_outbox"
|
||||||
consumer_group: "hyapp-activity-user-region-broadcast"
|
consumer_group: "hyapp-activity-user-region-broadcast"
|
||||||
consumer_max_reconsume_times: 16
|
consumer_max_reconsume_times: 16
|
||||||
|
|||||||
@ -2,13 +2,17 @@ package config
|
|||||||
|
|
||||||
import "testing"
|
import "testing"
|
||||||
|
|
||||||
func TestLoadLocalKeepsRocketMQDisabled(t *testing.T) {
|
func TestLoadLocalEnablesOutboxMQConsumers(t *testing.T) {
|
||||||
cfg, err := Load("../../configs/config.yaml")
|
cfg, err := Load("../../configs/config.yaml")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("Load local config failed: %v", err)
|
t.Fatalf("Load local config failed: %v", err)
|
||||||
}
|
}
|
||||||
if cfg.RocketMQ.Enabled || cfg.RocketMQ.RoomOutbox.Enabled || cfg.RocketMQ.UserOutbox.Enabled {
|
// activity 的充值、红包、礼物和区域播报都依赖 MQ fanout,本地默认必须和测试/线上一致。
|
||||||
t.Fatalf("local config must not require RocketMQ: %+v", cfg.RocketMQ)
|
if !cfg.RocketMQ.Enabled || !cfg.RocketMQ.RoomOutbox.Enabled || !cfg.RocketMQ.WalletOutbox.Enabled || !cfg.RocketMQ.UserOutbox.Enabled {
|
||||||
|
t.Fatalf("local config must enable all activity outbox MQ consumers: %+v", cfg.RocketMQ)
|
||||||
|
}
|
||||||
|
if !cfg.FirstRechargeRewardWorker.Enabled || !cfg.CumulativeRechargeRewardWorker.Enabled || !cfg.RedPacketBroadcastWorker.Enabled {
|
||||||
|
t.Fatalf("local config must enable wallet outbox workers: first=%+v cumulative=%+v red_packet=%+v", cfg.FirstRechargeRewardWorker, cfg.CumulativeRechargeRewardWorker, cfg.RedPacketBroadcastWorker)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -9,8 +9,8 @@ user_service_addr: "127.0.0.1:13005"
|
|||||||
activity_service_addr: "127.0.0.1:13006"
|
activity_service_addr: "127.0.0.1:13006"
|
||||||
launch_session_ttl: "15m"
|
launch_session_ttl: "15m"
|
||||||
rocketmq:
|
rocketmq:
|
||||||
enabled: false
|
enabled: true
|
||||||
name_servers: []
|
name_servers: ["127.0.0.1:19876"]
|
||||||
name_server_domain: ""
|
name_server_domain: ""
|
||||||
access_key: ""
|
access_key: ""
|
||||||
secret_key: ""
|
secret_key: ""
|
||||||
@ -18,11 +18,11 @@ rocketmq:
|
|||||||
send_timeout: "3s"
|
send_timeout: "3s"
|
||||||
retry: 2
|
retry: 2
|
||||||
game_outbox:
|
game_outbox:
|
||||||
enabled: false
|
enabled: true
|
||||||
topic: "hyapp_game_outbox"
|
topic: "hyapp_game_outbox"
|
||||||
producer_group: "hyapp-game-outbox-producer"
|
producer_group: "hyapp-game-outbox-producer"
|
||||||
outbox_worker:
|
outbox_worker:
|
||||||
enabled: false
|
enabled: true
|
||||||
poll_interval: "1s"
|
poll_interval: "1s"
|
||||||
batch_size: 100
|
batch_size: 100
|
||||||
publish_timeout: "3s"
|
publish_timeout: "3s"
|
||||||
|
|||||||
@ -49,25 +49,25 @@ cp_notice_worker:
|
|||||||
max_backoff: 5m
|
max_backoff: 5m
|
||||||
|
|
||||||
rocketmq:
|
rocketmq:
|
||||||
# 本地默认关闭;开启后 notice 只消费 owner outbox MQ fanout,仍写 notice_delivery_events 做幂等。
|
# notice 只消费 owner outbox MQ fanout,仍写 notice_delivery_events 做幂等。
|
||||||
enabled: false
|
enabled: true
|
||||||
name_servers: []
|
name_servers: ["127.0.0.1:19876"]
|
||||||
name_server_domain: ""
|
name_server_domain: ""
|
||||||
access_key: ""
|
access_key: ""
|
||||||
secret_key: ""
|
secret_key: ""
|
||||||
namespace: ""
|
namespace: ""
|
||||||
wallet_outbox:
|
wallet_outbox:
|
||||||
enabled: false
|
enabled: true
|
||||||
topic: "hyapp_wallet_outbox"
|
topic: "hyapp_wallet_outbox"
|
||||||
consumer_group: "hyapp-notice-wallet-outbox"
|
consumer_group: "hyapp-notice-wallet-outbox"
|
||||||
consumer_max_reconsume_times: 16
|
consumer_max_reconsume_times: 16
|
||||||
room_outbox:
|
room_outbox:
|
||||||
enabled: false
|
enabled: true
|
||||||
topic: "hyapp_room_outbox"
|
topic: "hyapp_room_outbox"
|
||||||
consumer_group: "hyapp-notice-room-outbox"
|
consumer_group: "hyapp-notice-room-outbox"
|
||||||
consumer_max_reconsume_times: 16
|
consumer_max_reconsume_times: 16
|
||||||
user_outbox:
|
user_outbox:
|
||||||
enabled: false
|
enabled: true
|
||||||
topic: "hyapp_user_outbox"
|
topic: "hyapp_user_outbox"
|
||||||
consumer_group: "hyapp-notice-cp-user-outbox"
|
consumer_group: "hyapp-notice-cp-user-outbox"
|
||||||
consumer_max_reconsume_times: 16
|
consumer_max_reconsume_times: 16
|
||||||
|
|||||||
@ -2,13 +2,18 @@ package config
|
|||||||
|
|
||||||
import "testing"
|
import "testing"
|
||||||
|
|
||||||
func TestLoadLocalKeepsRocketMQDisabled(t *testing.T) {
|
func TestLoadLocalEnablesOutboxMQConsumers(t *testing.T) {
|
||||||
cfg, err := Load("../../configs/config.yaml")
|
cfg, err := Load("../../configs/config.yaml")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("Load local config failed: %v", err)
|
t.Fatalf("Load local config failed: %v", err)
|
||||||
}
|
}
|
||||||
if cfg.RocketMQ.Enabled || cfg.RocketMQ.WalletOutbox.Enabled || cfg.RocketMQ.RoomOutbox.Enabled {
|
// 本地默认也走 MQ fanout,避免本地、testbox、线上三套 outbox 语义漂移。
|
||||||
t.Fatalf("local config must not require RocketMQ: %+v", cfg.RocketMQ)
|
if !cfg.RocketMQ.Enabled || !cfg.RocketMQ.WalletOutbox.Enabled || !cfg.RocketMQ.RoomOutbox.Enabled || !cfg.RocketMQ.UserOutbox.Enabled {
|
||||||
|
t.Fatalf("local config must enable all notice outbox MQ consumers: %+v", cfg.RocketMQ)
|
||||||
|
}
|
||||||
|
// 直扫 owner DB 的老 worker 已被启动校验禁用,只保留配置参数给离线修复工具复用。
|
||||||
|
if cfg.WalletNoticeWorker.Enabled || cfg.RoomNoticeWorker.Enabled || cfg.CPNoticeWorker.Enabled {
|
||||||
|
t.Fatalf("local config must keep legacy DB poll workers disabled: wallet=%+v room=%+v cp=%+v", cfg.WalletNoticeWorker, cfg.RoomNoticeWorker, cfg.CPNoticeWorker)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -17,8 +22,8 @@ func TestLoadTencentExampleEnablesOutboxMQConsumers(t *testing.T) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("Load tencent example failed: %v", err)
|
t.Fatalf("Load tencent example failed: %v", err)
|
||||||
}
|
}
|
||||||
if cfg.WalletNoticeWorker.Enabled || cfg.RoomNoticeWorker.Enabled {
|
if cfg.WalletNoticeWorker.Enabled || cfg.RoomNoticeWorker.Enabled || cfg.CPNoticeWorker.Enabled {
|
||||||
t.Fatalf("tencent example must keep legacy DB poll workers disabled: wallet=%+v room=%+v", cfg.WalletNoticeWorker, cfg.RoomNoticeWorker)
|
t.Fatalf("tencent example must keep legacy DB poll workers disabled: wallet=%+v room=%+v cp=%+v", cfg.WalletNoticeWorker, cfg.RoomNoticeWorker, cfg.CPNoticeWorker)
|
||||||
}
|
}
|
||||||
if !cfg.RocketMQ.Enabled || !cfg.RocketMQ.WalletOutbox.Enabled || cfg.RocketMQ.WalletOutbox.Topic == "" || cfg.RocketMQ.WalletOutbox.ConsumerGroup == "" {
|
if !cfg.RocketMQ.Enabled || !cfg.RocketMQ.WalletOutbox.Enabled || cfg.RocketMQ.WalletOutbox.Topic == "" || cfg.RocketMQ.WalletOutbox.ConsumerGroup == "" {
|
||||||
t.Fatalf("tencent example must configure wallet outbox MQ consumer: %+v", cfg.RocketMQ)
|
t.Fatalf("tencent example must configure wallet outbox MQ consumer: %+v", cfg.RocketMQ)
|
||||||
|
|||||||
@ -54,9 +54,9 @@ mic_publish_timeout: "15s"
|
|||||||
mic_publish_scan_interval: "1s"
|
mic_publish_scan_interval: "1s"
|
||||||
room_rocket_launch_scan_interval: "1s"
|
room_rocket_launch_scan_interval: "1s"
|
||||||
rocketmq:
|
rocketmq:
|
||||||
# 本地默认关闭;开启后 room_outbox 可投 MQ,火箭倒计时用延迟消息到点唤醒。
|
# 本地默认走 RocketMQ fanout,和 Docker/testbox/线上保持同一条 outbox 链路。
|
||||||
enabled: false
|
enabled: true
|
||||||
name_servers: []
|
name_servers: ["127.0.0.1:19876"]
|
||||||
name_server_domain: ""
|
name_server_domain: ""
|
||||||
access_key: ""
|
access_key: ""
|
||||||
secret_key: ""
|
secret_key: ""
|
||||||
@ -64,27 +64,27 @@ rocketmq:
|
|||||||
send_timeout: "3s"
|
send_timeout: "3s"
|
||||||
retry: 2
|
retry: 2
|
||||||
room_outbox:
|
room_outbox:
|
||||||
enabled: false
|
enabled: true
|
||||||
topic: "hyapp_room_outbox"
|
topic: "hyapp_room_outbox"
|
||||||
producer_group: "hyapp-room-outbox-producer"
|
producer_group: "hyapp-room-outbox-producer"
|
||||||
tencent_im_consumer_enabled: false
|
tencent_im_consumer_enabled: true
|
||||||
tencent_im_consumer_group: "hyapp-room-im-bridge"
|
tencent_im_consumer_group: "hyapp-room-im-bridge"
|
||||||
consumer_max_reconsume_times: 16
|
consumer_max_reconsume_times: 16
|
||||||
rocket_launch:
|
rocket_launch:
|
||||||
enabled: false
|
enabled: true
|
||||||
topic: "hyapp_room_rocket_launch"
|
topic: "hyapp_room_rocket_launch"
|
||||||
producer_group: "hyapp-room-rocket-launch-producer"
|
producer_group: "hyapp-room-rocket-launch-producer"
|
||||||
consumer_group: "hyapp-room-rocket-launch"
|
consumer_group: "hyapp-room-rocket-launch"
|
||||||
consumer_max_reconsume_times: 16
|
consumer_max_reconsume_times: 16
|
||||||
user_outbox:
|
user_outbox:
|
||||||
enabled: false
|
enabled: true
|
||||||
topic: "hyapp_user_outbox"
|
topic: "hyapp_user_outbox"
|
||||||
consumer_group: "hyapp-room-user-region-sync"
|
consumer_group: "hyapp-room-user-region-sync"
|
||||||
consumer_max_reconsume_times: 16
|
consumer_max_reconsume_times: 16
|
||||||
outbox_worker:
|
outbox_worker:
|
||||||
# room_outbox 是腾讯云 IM 和 activity-service 的异步投递通道;失败退避重试,超过上限转死信。
|
# room_outbox 是腾讯云 IM 和 activity-service 的异步投递通道;本地也走 MQ,避免和测试/线上链路漂移。
|
||||||
enabled: true
|
enabled: true
|
||||||
publish_mode: "direct"
|
publish_mode: "mq"
|
||||||
poll_interval: "1s"
|
poll_interval: "1s"
|
||||||
batch_size: 100
|
batch_size: 100
|
||||||
publish_timeout: "3s"
|
publish_timeout: "3s"
|
||||||
|
|||||||
@ -34,11 +34,12 @@ func TestLoad(t *testing.T) {
|
|||||||
if cfg.WalletServiceAddr != "127.0.0.1:13004" {
|
if cfg.WalletServiceAddr != "127.0.0.1:13004" {
|
||||||
t.Fatalf("unexpected wallet addr: %s", cfg.WalletServiceAddr)
|
t.Fatalf("unexpected wallet addr: %s", cfg.WalletServiceAddr)
|
||||||
}
|
}
|
||||||
if !cfg.OutboxWorker.Enabled || cfg.OutboxWorker.PublishMode != OutboxPublishModeDirect || cfg.OutboxWorker.PollInterval != time.Second || cfg.OutboxWorker.BatchSize != 100 || cfg.OutboxWorker.PublishTimeout != 3*time.Second || cfg.OutboxWorker.RetryStrategy != "exponential_backoff" || cfg.OutboxWorker.MaxRetryCount != 10 || cfg.OutboxWorker.InitialBackoff != 5*time.Second || cfg.OutboxWorker.MaxBackoff != 5*time.Minute {
|
if !cfg.OutboxWorker.Enabled || cfg.OutboxWorker.PublishMode != OutboxPublishModeMQ || cfg.OutboxWorker.PollInterval != time.Second || cfg.OutboxWorker.BatchSize != 100 || cfg.OutboxWorker.PublishTimeout != 3*time.Second || cfg.OutboxWorker.RetryStrategy != "exponential_backoff" || cfg.OutboxWorker.MaxRetryCount != 10 || cfg.OutboxWorker.InitialBackoff != 5*time.Second || cfg.OutboxWorker.MaxBackoff != 5*time.Minute {
|
||||||
t.Fatalf("unexpected outbox worker config: %+v", cfg.OutboxWorker)
|
t.Fatalf("unexpected outbox worker config: %+v", cfg.OutboxWorker)
|
||||||
}
|
}
|
||||||
if cfg.RocketMQ.Enabled || cfg.RocketMQ.RoomOutbox.Enabled || cfg.RocketMQ.RocketLaunch.Enabled {
|
// 本地默认也走 room_outbox MQ、IM bridge 和火箭延迟唤醒,避免本地直投和线上 MQ 语义分叉。
|
||||||
t.Fatalf("local config must not require RocketMQ: %+v", cfg.RocketMQ)
|
if !cfg.RocketMQ.Enabled || !cfg.RocketMQ.RoomOutbox.Enabled || !cfg.RocketMQ.RoomOutbox.TencentIMConsumerEnabled || !cfg.RocketMQ.RocketLaunch.Enabled || !cfg.RocketMQ.UserOutbox.Enabled {
|
||||||
|
t.Fatalf("local config must enable room MQ fanout and IM bridge: %+v", cfg.RocketMQ)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -6,8 +6,8 @@ query_http_addr: ":13010"
|
|||||||
mysql_dsn: "hyapp:hyapp@tcp(127.0.0.1:23306)/hyapp_statistics?parseTime=true&charset=utf8mb4&loc=UTC&multiStatements=true"
|
mysql_dsn: "hyapp:hyapp@tcp(127.0.0.1:23306)/hyapp_statistics?parseTime=true&charset=utf8mb4&loc=UTC&multiStatements=true"
|
||||||
activity_mysql_dsn: "hyapp:hyapp@tcp(127.0.0.1:23306)/hyapp_activity?parseTime=true&charset=utf8mb4&loc=UTC"
|
activity_mysql_dsn: "hyapp:hyapp@tcp(127.0.0.1:23306)/hyapp_activity?parseTime=true&charset=utf8mb4&loc=UTC"
|
||||||
rocketmq:
|
rocketmq:
|
||||||
enabled: false
|
enabled: true
|
||||||
name_servers: []
|
name_servers: ["127.0.0.1:19876"]
|
||||||
name_server_domain: ""
|
name_server_domain: ""
|
||||||
access_key: ""
|
access_key: ""
|
||||||
secret_key: ""
|
secret_key: ""
|
||||||
@ -15,22 +15,22 @@ rocketmq:
|
|||||||
namespace: ""
|
namespace: ""
|
||||||
vip_channel: false
|
vip_channel: false
|
||||||
wallet_outbox:
|
wallet_outbox:
|
||||||
enabled: false
|
enabled: true
|
||||||
topic: "hyapp_wallet_outbox"
|
topic: "hyapp_wallet_outbox"
|
||||||
consumer_group: "hyapp-statistics-wallet-outbox"
|
consumer_group: "hyapp-statistics-wallet-outbox"
|
||||||
consumer_max_reconsume_times: 16
|
consumer_max_reconsume_times: 16
|
||||||
room_outbox:
|
room_outbox:
|
||||||
enabled: false
|
enabled: true
|
||||||
topic: "hyapp_room_outbox"
|
topic: "hyapp_room_outbox"
|
||||||
consumer_group: "hyapp-statistics-room-outbox"
|
consumer_group: "hyapp-statistics-room-outbox"
|
||||||
consumer_max_reconsume_times: 16
|
consumer_max_reconsume_times: 16
|
||||||
user_outbox:
|
user_outbox:
|
||||||
enabled: false
|
enabled: true
|
||||||
topic: "hyapp_user_outbox"
|
topic: "hyapp_user_outbox"
|
||||||
consumer_group: "hyapp-statistics-user-outbox"
|
consumer_group: "hyapp-statistics-user-outbox"
|
||||||
consumer_max_reconsume_times: 16
|
consumer_max_reconsume_times: 16
|
||||||
game_outbox:
|
game_outbox:
|
||||||
enabled: false
|
enabled: true
|
||||||
topic: "hyapp_game_outbox"
|
topic: "hyapp_game_outbox"
|
||||||
consumer_group: "hyapp-statistics-game-outbox"
|
consumer_group: "hyapp-statistics-game-outbox"
|
||||||
consumer_max_reconsume_times: 16
|
consumer_max_reconsume_times: 16
|
||||||
|
|||||||
@ -24,9 +24,9 @@ third_party:
|
|||||||
allowed_sign_in_providers:
|
allowed_sign_in_providers:
|
||||||
- "google.com"
|
- "google.com"
|
||||||
invite_recharge_worker:
|
invite_recharge_worker:
|
||||||
enabled: false
|
enabled: true
|
||||||
mic_time_worker:
|
mic_time_worker:
|
||||||
enabled: false
|
enabled: true
|
||||||
cp_relationship_worker:
|
cp_relationship_worker:
|
||||||
enabled: true
|
enabled: true
|
||||||
consumer_group: "hyapp-user-cp-room-outbox"
|
consumer_group: "hyapp-user-cp-room-outbox"
|
||||||
@ -44,7 +44,7 @@ rocketmq:
|
|||||||
secret_key: ""
|
secret_key: ""
|
||||||
namespace: ""
|
namespace: ""
|
||||||
wallet_outbox:
|
wallet_outbox:
|
||||||
enabled: false
|
enabled: true
|
||||||
topic: "hyapp_wallet_outbox"
|
topic: "hyapp_wallet_outbox"
|
||||||
consumer_group: "hyapp-user-invite-wallet-outbox"
|
consumer_group: "hyapp-user-invite-wallet-outbox"
|
||||||
consumer_max_reconsume_times: 16
|
consumer_max_reconsume_times: 16
|
||||||
|
|||||||
@ -24,37 +24,37 @@ third_party:
|
|||||||
allowed_sign_in_providers:
|
allowed_sign_in_providers:
|
||||||
- "google.com"
|
- "google.com"
|
||||||
invite_recharge_worker:
|
invite_recharge_worker:
|
||||||
enabled: false
|
enabled: true
|
||||||
mic_time_worker:
|
mic_time_worker:
|
||||||
enabled: false
|
enabled: true
|
||||||
cp_relationship_worker:
|
cp_relationship_worker:
|
||||||
enabled: false
|
enabled: true
|
||||||
consumer_group: "hyapp-user-cp-room-outbox"
|
consumer_group: "hyapp-user-cp-room-outbox"
|
||||||
outbox_worker:
|
outbox_worker:
|
||||||
enabled: false
|
enabled: true
|
||||||
poll_interval: "1s"
|
poll_interval: "1s"
|
||||||
batch_size: 100
|
batch_size: 100
|
||||||
publish_timeout: "3s"
|
publish_timeout: "3s"
|
||||||
rocketmq:
|
rocketmq:
|
||||||
# 本地默认关闭;线上由 wallet/room outbox 投 MQ,各 consumer group 独立幂等消费。
|
# 本地默认走 RocketMQ fanout,和 Docker/testbox/线上保持同一条 outbox 链路。
|
||||||
enabled: false
|
enabled: true
|
||||||
name_servers: []
|
name_servers: ["127.0.0.1:19876"]
|
||||||
name_server_domain: ""
|
name_server_domain: ""
|
||||||
access_key: ""
|
access_key: ""
|
||||||
secret_key: ""
|
secret_key: ""
|
||||||
namespace: ""
|
namespace: ""
|
||||||
wallet_outbox:
|
wallet_outbox:
|
||||||
enabled: false
|
enabled: true
|
||||||
topic: "hyapp_wallet_outbox"
|
topic: "hyapp_wallet_outbox"
|
||||||
consumer_group: "hyapp-user-invite-wallet-outbox"
|
consumer_group: "hyapp-user-invite-wallet-outbox"
|
||||||
consumer_max_reconsume_times: 16
|
consumer_max_reconsume_times: 16
|
||||||
room_outbox:
|
room_outbox:
|
||||||
enabled: false
|
enabled: true
|
||||||
topic: "hyapp_room_outbox"
|
topic: "hyapp_room_outbox"
|
||||||
consumer_group: "hyapp-user-mictime-room-outbox"
|
consumer_group: "hyapp-user-mictime-room-outbox"
|
||||||
consumer_max_reconsume_times: 16
|
consumer_max_reconsume_times: 16
|
||||||
user_outbox:
|
user_outbox:
|
||||||
enabled: false
|
enabled: true
|
||||||
topic: "hyapp_user_outbox"
|
topic: "hyapp_user_outbox"
|
||||||
producer_group: "hyapp-user-outbox-producer"
|
producer_group: "hyapp-user-outbox-producer"
|
||||||
login_risk:
|
login_risk:
|
||||||
|
|||||||
@ -18,16 +18,16 @@ red_packet_expiry_worker:
|
|||||||
poll_interval: "5s"
|
poll_interval: "5s"
|
||||||
batch_size: 50
|
batch_size: 50
|
||||||
projection_worker:
|
projection_worker:
|
||||||
enabled: false
|
enabled: true
|
||||||
poll_interval: "60s"
|
poll_interval: "60s"
|
||||||
batch_size: 10
|
batch_size: 10
|
||||||
lock_ttl: "30s"
|
lock_ttl: "30s"
|
||||||
consumer_group: "hyapp-wallet-projection"
|
consumer_group: "hyapp-wallet-projection"
|
||||||
consumer_max_reconsume_times: 16
|
consumer_max_reconsume_times: 16
|
||||||
rocketmq:
|
rocketmq:
|
||||||
# 本地默认关闭;线上由 wallet-service outbox worker 投递账务事实到 MQ。
|
# 本地默认走 RocketMQ fanout,和 Docker/testbox/线上保持同一条 outbox 链路。
|
||||||
enabled: false
|
enabled: true
|
||||||
name_servers: []
|
name_servers: ["127.0.0.1:19876"]
|
||||||
name_server_domain: ""
|
name_server_domain: ""
|
||||||
access_key: ""
|
access_key: ""
|
||||||
secret_key: ""
|
secret_key: ""
|
||||||
@ -35,11 +35,11 @@ rocketmq:
|
|||||||
send_timeout: "3s"
|
send_timeout: "3s"
|
||||||
retry: 2
|
retry: 2
|
||||||
wallet_outbox:
|
wallet_outbox:
|
||||||
enabled: false
|
enabled: true
|
||||||
topic: "hyapp_wallet_outbox"
|
topic: "hyapp_wallet_outbox"
|
||||||
producer_group: "hyapp-wallet-outbox-producer"
|
producer_group: "hyapp-wallet-outbox-producer"
|
||||||
realtime_outbox:
|
realtime_outbox:
|
||||||
enabled: false
|
enabled: true
|
||||||
topic: "hyapp_wallet_realtime_outbox"
|
topic: "hyapp_wallet_realtime_outbox"
|
||||||
producer_group: "hyapp-wallet-realtime-outbox-producer"
|
producer_group: "hyapp-wallet-realtime-outbox-producer"
|
||||||
google_play:
|
google_play:
|
||||||
@ -52,7 +52,7 @@ google_play:
|
|||||||
http_timeout: "10s"
|
http_timeout: "10s"
|
||||||
consume_enabled: true
|
consume_enabled: true
|
||||||
outbox_worker:
|
outbox_worker:
|
||||||
enabled: false
|
enabled: true
|
||||||
poll_interval: "1s"
|
poll_interval: "1s"
|
||||||
batch_size: 100
|
batch_size: 100
|
||||||
concurrency: 1
|
concurrency: 1
|
||||||
@ -61,7 +61,7 @@ outbox_worker:
|
|||||||
initial_backoff: "5s"
|
initial_backoff: "5s"
|
||||||
max_backoff: "5m"
|
max_backoff: "5m"
|
||||||
realtime_outbox_worker:
|
realtime_outbox_worker:
|
||||||
enabled: false
|
enabled: true
|
||||||
poll_interval: "500ms"
|
poll_interval: "500ms"
|
||||||
batch_size: 50
|
batch_size: 50
|
||||||
concurrency: 2
|
concurrency: 2
|
||||||
|
|||||||
@ -2,13 +2,17 @@ package config
|
|||||||
|
|
||||||
import "testing"
|
import "testing"
|
||||||
|
|
||||||
func TestLoadLocalKeepsOutboxMQDisabled(t *testing.T) {
|
func TestLoadLocalEnablesOutboxMQ(t *testing.T) {
|
||||||
cfg, err := Load("../../configs/config.yaml")
|
cfg, err := Load("../../configs/config.yaml")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("Load local config failed: %v", err)
|
t.Fatalf("Load local config failed: %v", err)
|
||||||
}
|
}
|
||||||
if cfg.RocketMQ.Enabled || cfg.RocketMQ.WalletOutbox.Enabled || cfg.RocketMQ.RealtimeOutbox.Enabled {
|
// 本地默认发布普通钱包事实和实时红包事实,链路和 Docker/testbox/线上保持一致。
|
||||||
t.Fatalf("local config must not require RocketMQ: %+v", cfg.RocketMQ)
|
if !cfg.RocketMQ.Enabled || !cfg.RocketMQ.WalletOutbox.Enabled || !cfg.RocketMQ.RealtimeOutbox.Enabled {
|
||||||
|
t.Fatalf("local config must enable wallet outbox MQ producers: %+v", cfg.RocketMQ)
|
||||||
|
}
|
||||||
|
if !cfg.OutboxWorker.Enabled || !cfg.RealtimeOutboxWorker.Enabled || !cfg.ProjectionWorker.Enabled {
|
||||||
|
t.Fatalf("local config must enable wallet outbox workers: outbox=%+v realtime=%+v projection=%+v", cfg.OutboxWorker, cfg.RealtimeOutboxWorker, cfg.ProjectionWorker)
|
||||||
}
|
}
|
||||||
if cfg.OutboxWorker.Concurrency != 1 || cfg.RealtimeOutboxWorker.Concurrency != 2 {
|
if cfg.OutboxWorker.Concurrency != 1 || cfg.RealtimeOutboxWorker.Concurrency != 2 {
|
||||||
t.Fatalf("local outbox worker defaults mismatch: outbox=%+v realtime=%+v", cfg.OutboxWorker, cfg.RealtimeOutboxWorker)
|
t.Fatalf("local outbox worker defaults mismatch: outbox=%+v realtime=%+v", cfg.OutboxWorker, cfg.RealtimeOutboxWorker)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user