-
Notifications
You must be signed in to change notification settings - Fork 11
Test RPC client and server using the oslo.messaging API
License
kgiusti/oslo-messaging-clients
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
A set of simple oslo.messaging clients. You can use these clients to play with the oslo.messaging API. Clients: -------- rpc-server - Listens for RPC requests and sends replies. rpc-client - Sends RPC requests to an RPC server. listener - Listens for notification messages. notifier - Sends notification messages. Use the --help option for more detail. For more info on Openstack and oslo.messaging, see: http://www.openstack.org/ Not officially part of the olso.messaging project, just my own sandbox to play in. RUNNING ------- These examples assume your are running the RabbitMQ broker on localhost port 5672. You can use the --url parameter to specify a different address if necessary (e.g. --url rabbit://some.host.com:9999 To run an RPC server (best to do this in its own dedicated terminal as it blocks): $ ./rpc-server --name Server01 Running server, name=Server01 exchange=my-exchange topic=my-topic namespace=my-namespace Then use rpc-client to make an RPC call to the server: $ ./rpc-client --method echo --kwargs "arg1=value1 arg2=value2" Calling server on topic my-topic, server=None exchange=my-exchange namespace=my-namespace fanout=None See the source for the server (rpc-server) for the RPC methods it supports. A similar example, but for notifications: First run a notification listener, for example assuming RabbitMQ on localhost: $ ./listener --url rabbit://localhost:5672 & Now you can issue notifications using the notifier command: $ ./notifier By default notifier issues a Debug level notification. You can change this using the --severity parameter: You can set the oslo.messaging configuration values by passing the clients a configuration file. Use the --oslo-config <file> parameter. Example: to configure the rpc-server with values from ./configs/rpc-server.conf: ./rpc-server.py --oslo-config ./configs/rpc-server.conf --name MyServer Using AMQP 1.0 and the Dispatch Router -------------------------------------- These clients can be run using the proposed AMQP 1.0 driver for olso.messaging. See: https://review.openstack.org/#/c/75815 This driver will work with the latest Qpid broker (qpidd), as well as the Qpid Dispatch Router. See: http://qpid.apache.org/components/dispatch-router/index.html for more details regarding the Dispatch Router. More detail TBD, but in summary you'll need to: 0) Build and install the Proton/C libraries, See: http://qpid.apache.org/proton/index.html. I've used the 0.7 release. If you've installed the Proton stuff in a non-standard path, you must set your python path so the clients can find the Proton Messenger python modules and C library wrapper. For example: $ export PYTHONPATH="$PYTHONPATH:/home/kgiusti/proton/0.7/INSTALL/usr/lib64/python2.7/site-packages" 1) Pull a copy of the AMQP 1.0 driver for oslo.messenger (see link above). Use tox as above to set up your python environment. If using Qpid: 2) Start the Qpid broker with the addition of the following queue and topic pattern specifiers: qpidd --queue-patterns exclusive --queue-patterns unicast --topic-patterns broadcast Note that Qpidd must be built with AMQP 1.0 support enabled! For example, if building against a non-standard install of Proton: cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_INSTALL_PREFIX=/home/kgiusti/work/proton/0.7/INSTALL \ -DSYSINSTALL_BINDINGS=OFF .. else if using Dispatch Router: 2a) Build Dispatch Router, linking it against the Proton libraries you installed in 0). For example, if building against a non-standard install of Proton: cmake -DCMAKE_INCLUDE_PATH=/home/kgiusti/work/proton/0.7/INSTALL/include \ -DCMAKE_LIBRARY_PATH=/home/kgiusti/work/proton/0.7/INSTALL/lib64 .. export PYTHONPATH="$PYTHONPATH:$(pwd)/python" 2b) Start the Dispatch Router, using the configuration provided in the oslo.messaging.dispatch.conf file. qdrouterd -c ./oslo.messaging.dispatch.conf 3) Start a server, using the 'amqp:' protocol URL: rpc-server --url amqp://<address of Dispatch/Qpidd> Server01 4) Run a client: rpc-client --url amqp://<address of Dispatch/Qpidd> echo key value Features -------- You can source the `env.sh` file to obtain some shortcuts. Examples: - drop all the rabbitmq trafic to simulate a network issue - start a rabbitmq cluster - etc... ```shell $ source env.sh $ oslo_start_cluster # start a rabbitmq cluster $ oslo_blackout_start # simulate a network issue ```
About
Test RPC client and server using the oslo.messaging API
Resources
License
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published