summaryrefslogtreecommitdiff
path: root/README
blob: 3308d9dc346220913728be3ca93d1bf295134329 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# RabbitMQ C AMQP client library

## Introduction

This is a C-language AMQP client library for use with AMQP servers
speaking protocol versions 0-8 and 0-9-1.

 - <http://www.rabbitmq.com/>
 - <http://www.amqp.org/>
 - <http://hg.rabbitmq.com/rabbitmq-c>

*NB*: This library's source code supports *either* 0-8 *or* 0-9-1, not
both simultaneously. Please check carefully that you have the variant
you require.

Announcements regarding the library are periodically made on the
RabbitMQ mailing list and on LShift's blog.

 - <http://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss>
 - <http://www.lshift.net/blog/>
 - <http://www.lshift.net/blog/category/lshift-sw/rabbitmq/>

## Retrieving the code

In addition to the source code for this library, you will require a
copy of `rabbitmq-codegen`. Here is a short `sh` script for retrieving
the necessary pieces:

    hg clone http://hg.rabbitmq.com/rabbitmq-codegen/
    hg clone http://hg.rabbitmq.com/rabbitmq-c/

You will also need a recent python with the simplejson module
installed, and the GNU autotools (autoconf, automake, libtool etc).

In current releases, the default (trunk) branch of the mercurial
repository hosting the `rabbitmq-c` code is set up for AMQP 0-8
support, with AMQP 0-9-1 support living on a separate mercurial
branch. To switch your checked-out copy of the source code to 0-9-1
support,

    (cd rabbitmq-codegen; hg up amqp_0_9_1)
    (cd rabbitmq-c; hg up amqp_0_9_1)

before building the code. If you switch branches after having compiled
the code, make sure to rerun `autoreconf`, `configure`, `make clean`
and `make` after switching branches.

## Building the code

Once you have all the prerequisites, change to the `rabbitmq-c`
directory and run

    autoreconf -i

to run the GNU autotools and generate the configure script, followed
by

    ./configure
    make

to build the `librabbitmq` library and the example programs.

## Running the examples

Arrange for a RabbitMQ or other AMQP server to be running on
`localhost` at TCP port number 5672.

In one terminal, run

    ./examples/amqp_listen localhost 5672 amq.direct test

In another terminal,

    ./examples/amqp_sendstring localhost 5672 amq.direct test "hello world"

You should see output similar to the following in the listener's
terminal window:

    Result 1
    Frame type 1, channel 1
    Method AMQP_BASIC_DELIVER_METHOD
    Delivery 1, exchange amq.direct routingkey test
    Content-type: text/plain
    ----
    00000000: 68 65 6C 6C 6F 20 77 6F : 72 6C 64                 hello world
    0000000B: