我希望你一切都好!首先,我是 EIP 世界的新手。我正在嘗試做一個(gè)簡(jiǎn)單的請(qǐng)求回復(fù):一個(gè) Golang rabbitMQ 客戶端Kotlin 中的 apache Camel 路由充當(dāng) RabbitMQ 服務(wù)器我試圖閱讀所有可能的文檔并搜索答案,但我什么也沒找到。我基本上是絕望的。主要是我看到了這個(gè),但還沒有任何效果。我的目標(biāo)是像圖像一樣進(jìn)行同步請(qǐng)求-回復(fù)。我的 Golang 客戶端如下所示:func (r *RabbitMQConn) GetQueue(name string) *amqp.Queue { ch := r.GetChannel() defer ch.Close() q, err := ch.QueueDeclare( name, false, false, true, false, nil, ) if err != nil { panic(err) } return &q}func (r *RabbitMQConn) PublishAndWait(routingKey string, correlationId string, event domain.SyncEventExtSend) (domain.SyncEventExtReceive, error) { message, err := json.Marshal(event) if err != nil { return domain.SyncEventExtReceive{}, apperrors.ErrInternal } ch := r.GetChannel() defer ch.Close() q := r.GetQueue("response") h, err := ch.Consume( q.Name, "", true, false, false, false, nil, ) if err != nil { return domain.SyncEventExtReceive{}, err } ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) defer cancel() err = ch.PublishWithContext( ctx, "", routingKey, false, false, amqp.Publishing{ ContentType: "application/json", Body: message, CorrelationId: correlationId, ReplyTo: q.Name, }, ) if err != nil { return domain.SyncEventExtReceive{}, err } for d := range h { fmt.Println("Received a message:", string(d.Body)) if d.CorrelationId == correlationId { var event domain.SyncEventExtReceive err = json.Unmarshal(d.Body, &event) return event, err } } return domain.SyncEventExtReceive{}, apperrors.ErrInternal}基本上,只是使用命名響應(yīng)隊(duì)列從默認(rèn)交換中消費(fèi)。此外,我將隊(duì)列名稱作為ReplyTo參數(shù)發(fā)送,并為其提供相關(guān) ID。發(fā)送的路由密鑰是daily-weather在這種情況下。我問是否有人有任何簡(jiǎn)單的例子可以用 Apache Camel 做到這一點(diǎn),因?yàn)槲曳浅C悦!H绻c我聯(lián)系,可以分享任何進(jìn)一步的細(xì)節(jié)。
1 回答

Qyouu
TA貢獻(xiàn)1786條經(jīng)驗(yàn) 獲得超11個(gè)贊
解決了
你好!一段時(shí)間后,我決定看一下spring-rabbitmq Camel 組件。我意識(shí)到 Camel 有exchange patterns,而 rabbitmq 默認(rèn)設(shè)置為inOut
. 這樣,自動(dòng)將信息返回給屬性replyTo
。
val RABBIMQ_ROUTE = "spring-rabbitmq:default?queues={{rabbitmq.weather.daily.routing_key}}"
default
指的是默認(rèn)交換隊(duì)列。
- 1 回答
- 0 關(guān)注
- 124 瀏覽
添加回答
舉報(bào)
0/150
提交
取消