如何在 krakend-amqp 中实现 rpc,或者如何通过 krakend 中的队列根据请求将响应返回给客户端?

问题描述

谁能帮我在 krakend 中设置 rabbitmq,当我尝试从队列中获取 kraken 中的消息并将其传递给客户端时遇到了一个大问题?

方案如下:

  1. 客户端-> API 网关(krakend)-> 队列(rabbitmq)-> 服务

反之亦然:

  1. 服务 -> 队列 (rabbitmq) -> API 网关 (krakend) -> 客户端

例如,我们收到来自客户端的请求 - “从某个服务获取产品列表”api 网关krakend) 接受它并将其发送到队列 (rabbitmq),最后,侦听队列服务 /strong> 收到消息并发送产品列表以响应另一个队列kraken 应获取此数据并将其传输给客户端(这里我不知道 kraken 应该如何将数据传输给我们的客户)。

链接到文档 https://www.krakend.io/docs/backends/amqp/

我尝试通过两种方式实现,但没有得到我需要的结果

第一种方式

  1. 我的生产者(在这里我得到带有 url 参数的请求帖子。Reply_to 参数是我将在 krakend 中等待答案的新队列的名称)在这里我将请求放入队列中。
{
  "endpoint": "/api/v1.0/goodsList/{reply_to}/{mess_id}/{route}","method": "POST","headers_to_pass": ["Content-Type"],"backend": [
    {
      "host": [
        "amqp://guest:guest@rabbitMQ:5672/"
      ],"sd": "static","encoding": "json","disable_host_sanitize": true,"extra_config": {
        "github.com/devopsfaith/krakend-amqp/produce": {
          "name": "queue","exchange": "exchange","durable": true,"delete": false,"exclusive": false,"no_wait": true,"mandatory": true,"immediate": false,"reply_to_key":"Reply_to","msg_id_key":"Mess_id","routing_key":"Route"
        }
      }
    }
  ]
},
  1. 我的消费者在这里我想为新队列提供名称和路由,以便创建它并开始侦听(消费)并根据请求向客户端提供数据
{
  "endpoint": "/api/v1.0/consumer/{queue_name}/{route}","method": "GET","extra_config": {
        "github.com/devopsfaith/krakend-amqp/consume": {
          "name": "Queue_name","exchange": "exchange2","durable": false,"exclusive": true,"internal": false,"no_local": false,"routing_key": "Route","prefetch_count": 10
        }
      }
    }
  ]
}

第二种方式

{
      "endpoint": "/api/v1.0/goodsList","output_encoding": "json","extra_config": {
        "github.com/devopsfaith/krakend/proxy": {
          "sequential": false
        }
      },"backend": [
        {
          "host": [
            "amqp://guest:guest@rabbitMQ:5672/"
          ],"url_pattern": "/","extra_config": {
            "github.com/devopsfaith/krakend-amqp/consume": {
              "name": "queue","routing_key": [
                "#"
              ],"prefetch_count": 10
            },"github.com/devopsfaith/krakend-amqp/produce": {
              "exchange": "exchange2","name": "queue2"
            }
          }

        }
      ]
    }

使用 amqp(rabbitMQ) 在 krakend 中实现客户端和服务器之间交换的正确方法是什么?

感谢您的帮助。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)