I am interested in listening to an Event Hub from a Python script and executing some code when an inbound message is detected.
On Ubuntu, using Python 2.7 with https://pypi.python.org/pypi/python-qpid-proton/0.10 and the example "receiver" script, I attempt to subscribe to a URI that looks like:
amqps://<key name>:<key>@<namespace>.servicebus.windows.net/<event hub name>/ConsumerGroups/$Default/Partitions/0
The following error is returned:
proton.MessengerException: Cannot subscribe to <...>
I believe that my Event Hub is set up correctly because I am able to send events into it using a separate "send" script and the Azure dashboard shows that events have arrived. But I am unable to connect as a subscriber to receive messages.
I tried to reproduce your issue on Ubuntu Server, but failed.
Although you said set up your event hub correctly, I still suggest you can check the
key name
&key
again via theCONFIGURE
tab page of your event hub on Azure old portal and make sure the policy namekey name
defined that has the permissionListen
in theShared access policies
. Or you can useRootManageSharedAccessKey
& its key in the access connection information of your service bus to try again.Also, you can refer to the sample
event_hubs_receive_many.py
at https://gist.github.com/tomconte/e2a4667185a9bf674f59 (it based on the proton sampleasync.py
at https://qpid.apache.org/releases/qpid-proton-0.8/messenger/python/examples/async.py.html) to check your code.Take a look at https://github.com/Azure/azure-event-hubs-python
Try ./examples/recv.py to see if it works. Note that the SAS key needs to be URL encoded and the associated policy has Listen action defined. ADDRESS needs to be updated from your event hub configuration.