Skip to content

kgiusti/oslo-messaging-clients

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

47 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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

No packages published

Contributors 4

  •  
  •  
  •  
  •