Azure::ServiceBus 订阅不接收通过 REST 发送到主题的消息 POST
Azure::ServiceBus subscription does not receive messages sent to topic via REST POST
使用 Azure::ServiceBus
ruby SDK 将消息发送到 Azure 服务总线主题工作正常。客户端正在使用订阅和 Azure::ServiceBus
来接收消息。
但是,如果发件人使用 ASB REST
API 来 POST
一条消息,则订阅没有消息。只有使用 Azure::ServiceBus
发送的消息才会出现在订阅中。
例如,这适用于使用 Azure::ServiceBus
发送的消息,但对于使用 REST
:
发送的消息则收不到任何东西
message = azure_service_bus_service.receive_subscription_message("testtopic", "retry-count-subscriber", { :peek_lock => true })
ASB returns 201
用于 POST
ing 以便消息成功发送到主题。
我这边可以正常工作。
require 'net/http'
require 'net/https'
require 'uri'
require 'json'
uri = URI('https://yourservicebusnamespacename.servicebus.windows.net/yourservicebustopicname/messages')
bearertoken = "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Im5PbzNaRHJPRFhFSzFqS1doWHNsSFJfS1hFZyIsImtpZCI6Im5PbzNaRHJPRFhFSzFqS1doWHNsSFJfS1hFZyJ9.eyJhdWQiOiJodHRwczovL2Jvd21hbjEwMTIuc2VydmljZWJ1cy53aW5kb3dzLm5ldCIsImlzcyI6Imh0dHBzOi8vc3RzLndpbmRvd3MubmV0L2U0YzlhYjRlLWJkMjctNDBkNS04NDU5LTIzMGJhMmE3NTdmYi8iLCJpYXQiOjE2MTE3MzUwNTgsIm5iZiI6MTYxMTczNTA1OCwiZXhwIjoxNjExODE4MTU4LCJhaW8iOiJFMlpnWUtqc3RMKzRaZjRsM2xtVHQ4eU91UHJzQVFBPSIsImFwcGlkIjoiYjljNTdjOGQtMTkwNC00YjRiLWI2MjgtNDkxNzFiYzc4MzI0IiwiYXBwaWRhY3IiOiIxIiwiaWRwIjoiaHR0cHM6Ly9zdHMud2luZG93cy5uZXQvZTRjOWFiNGUtYmQyNy00MGQ1LTg0NTktMjMwYmEyYTc1N2ZiLyIsIm9pZCI6ImY5Y2ExOTI2LTBhOTUtNDQ1Yi04NDE5LTBjNGE2NGY5ZGM3NiIsInJoIjoiMC5BU2tBVHF2SjVDZTkxVUNFV1NNTG9xZFgtNDE4eGJrRUdVdEx0aWhKRnh2SGd5UXBBQUEuIiwic3ViIjoiZjljYTE5MjYtMGE5NS00NDViLTg0MTktMGM0YTY0ZjlkYzc2IiwidGlkIjoiZTRjOWFiNGUtYmQyNy00MGQ1LTg0NTktMjMwYmEyYTc1N2ZiIiwidXRpIjoiTGZLVXJRUzdtazZ3QUREdFFoZ29BQSIsInZlciI6IjEuMCJ9.GE_j9d1l6XlPrmx7q8bN-gJYKaP8DFf2JUErwPsa-Ca--UbkUJ-XGlmVbAq2oRY_Z-2zsVbLQVNA0soB1NZVwDcSk3I_cJdIVK8J0jx5Yh0AE3XdFnObDd8zo4lcupwQbEZQCGx_5L_iJU1cKZwHDMVmtKPvk2X8MhM2Ks6OOftT_2Wxz-lo79pc9K7L-XPbHpyjRdAfbYxLhifDKGX4XBpViAxZ7gFGULI1FILW7VvWZU02aUTkNOVf_csO3UJLNjmgcm-_nljq1tka6nQC4YiJKo3dMtlwOUoeJwxdFn1Mblvs6xdGsvIxGvxDwRSvy8n4ySUyrapOtgoGDMi82Q"
header = {'Content-Type': 'text/plain',
'Authorization': bearertoken
}
mes = "This is testbowman message."
Net::HTTP.start(uri.host, uri.port,
:use_ssl => uri.scheme == 'https') do |http|
request = Net::HTTP::Post.new(uri,header)
request.body = mes
response = http.request request # Net::HTTPResponse object
puts response.body
end
puts 'Request is OK.'
并且请不要忘记将相关的添加应用程序添加到 azure 服务总线命名空间的 RBAC 角色中:
问题是由订阅者 SqlFilter
引起的:
retry_count > 9
ruby post 在正确设置时工作:
message = Azure::ServiceBus::BrokeredMessage.new(message, { :retry_count => 10 })
将 :retry_count
更改为任何小于 9 的值也会重现 ruby 代码中的问题。
使用 Azure::ServiceBus
ruby SDK 将消息发送到 Azure 服务总线主题工作正常。客户端正在使用订阅和 Azure::ServiceBus
来接收消息。
但是,如果发件人使用 ASB REST
API 来 POST
一条消息,则订阅没有消息。只有使用 Azure::ServiceBus
发送的消息才会出现在订阅中。
例如,这适用于使用 Azure::ServiceBus
发送的消息,但对于使用 REST
:
message = azure_service_bus_service.receive_subscription_message("testtopic", "retry-count-subscriber", { :peek_lock => true })
ASB returns 201
用于 POST
ing 以便消息成功发送到主题。
我这边可以正常工作。
require 'net/http'
require 'net/https'
require 'uri'
require 'json'
uri = URI('https://yourservicebusnamespacename.servicebus.windows.net/yourservicebustopicname/messages')
bearertoken = "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Im5PbzNaRHJPRFhFSzFqS1doWHNsSFJfS1hFZyIsImtpZCI6Im5PbzNaRHJPRFhFSzFqS1doWHNsSFJfS1hFZyJ9.eyJhdWQiOiJodHRwczovL2Jvd21hbjEwMTIuc2VydmljZWJ1cy53aW5kb3dzLm5ldCIsImlzcyI6Imh0dHBzOi8vc3RzLndpbmRvd3MubmV0L2U0YzlhYjRlLWJkMjctNDBkNS04NDU5LTIzMGJhMmE3NTdmYi8iLCJpYXQiOjE2MTE3MzUwNTgsIm5iZiI6MTYxMTczNTA1OCwiZXhwIjoxNjExODE4MTU4LCJhaW8iOiJFMlpnWUtqc3RMKzRaZjRsM2xtVHQ4eU91UHJzQVFBPSIsImFwcGlkIjoiYjljNTdjOGQtMTkwNC00YjRiLWI2MjgtNDkxNzFiYzc4MzI0IiwiYXBwaWRhY3IiOiIxIiwiaWRwIjoiaHR0cHM6Ly9zdHMud2luZG93cy5uZXQvZTRjOWFiNGUtYmQyNy00MGQ1LTg0NTktMjMwYmEyYTc1N2ZiLyIsIm9pZCI6ImY5Y2ExOTI2LTBhOTUtNDQ1Yi04NDE5LTBjNGE2NGY5ZGM3NiIsInJoIjoiMC5BU2tBVHF2SjVDZTkxVUNFV1NNTG9xZFgtNDE4eGJrRUdVdEx0aWhKRnh2SGd5UXBBQUEuIiwic3ViIjoiZjljYTE5MjYtMGE5NS00NDViLTg0MTktMGM0YTY0ZjlkYzc2IiwidGlkIjoiZTRjOWFiNGUtYmQyNy00MGQ1LTg0NTktMjMwYmEyYTc1N2ZiIiwidXRpIjoiTGZLVXJRUzdtazZ3QUREdFFoZ29BQSIsInZlciI6IjEuMCJ9.GE_j9d1l6XlPrmx7q8bN-gJYKaP8DFf2JUErwPsa-Ca--UbkUJ-XGlmVbAq2oRY_Z-2zsVbLQVNA0soB1NZVwDcSk3I_cJdIVK8J0jx5Yh0AE3XdFnObDd8zo4lcupwQbEZQCGx_5L_iJU1cKZwHDMVmtKPvk2X8MhM2Ks6OOftT_2Wxz-lo79pc9K7L-XPbHpyjRdAfbYxLhifDKGX4XBpViAxZ7gFGULI1FILW7VvWZU02aUTkNOVf_csO3UJLNjmgcm-_nljq1tka6nQC4YiJKo3dMtlwOUoeJwxdFn1Mblvs6xdGsvIxGvxDwRSvy8n4ySUyrapOtgoGDMi82Q"
header = {'Content-Type': 'text/plain',
'Authorization': bearertoken
}
mes = "This is testbowman message."
Net::HTTP.start(uri.host, uri.port,
:use_ssl => uri.scheme == 'https') do |http|
request = Net::HTTP::Post.new(uri,header)
request.body = mes
response = http.request request # Net::HTTPResponse object
puts response.body
end
puts 'Request is OK.'
并且请不要忘记将相关的添加应用程序添加到 azure 服务总线命名空间的 RBAC 角色中:
问题是由订阅者 SqlFilter
引起的:
retry_count > 9
ruby post 在正确设置时工作:
message = Azure::ServiceBus::BrokeredMessage.new(message, { :retry_count => 10 })
将 :retry_count
更改为任何小于 9 的值也会重现 ruby 代码中的问题。