Blame view

3rdparty/rabbitmq-c-0.11.0/README.md 5.35 KB
09c2d08c   Hu Chunming   arm交付版
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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
  # RabbitMQ C AMQP client library
  
  [![Build Status](https://secure.travis-ci.org/alanxz/rabbitmq-c.png?branch=master)](http://travis-ci.org/alanxz/rabbitmq-c)
  
  [![Coverage Status](https://coveralls.io/repos/github/alanxz/rabbitmq-c/badge.svg?branch=master)](https://coveralls.io/github/alanxz/rabbitmq-c?branch=master)
  
  ## Introduction
  
  This is a C-language AMQP client library for use with v2.0+ of the
  [RabbitMQ](http://www.rabbitmq.com/) broker.
  
   - <http://github.com/alanxz/rabbitmq-c>
  
  Announcements regarding the library are periodically made on the
  rabbitmq-c-users and cross-posted to rabbitmq-users.
  
   - <https://groups.google.com/forum/#!forum/rabbitmq-c-users>
   - <https://groups.google.com/forum/#!forum/rabbitmq-users>
  
  ## Latest Stable Version
  
  The latest stable release of rabbitmq-c can be found at:
  
   - <https://github.com/alanxz/rabbitmq-c/releases/latest>
  
  ## Documentation
  
  API documentation for v0.8.0+ can viewed from:
  
  <http://alanxz.github.io/rabbitmq-c/docs/0.8.0/>
  
  ## Getting started
  
  ### Building and installing
  
  #### Prereqs:
  - [CMake v2.6 or better](http://www.cmake.org/)
  - A C compiler (GCC 4.4+, clang, and MSVC are test. Other compilers may also
    work)
  - *Optionally* [OpenSSL](http://www.openssl.org/) v0.9.8+ to enable support for
    connecting to RabbitMQ over SSL/TLS
  - *Optionally* [POpt](http://freecode.com/projects/popt) to build some handy
    command-line tools.
  - *Optionally* [XmlTo](https://fedorahosted.org/xmlto/) to build man pages for
    the handy command-line tools
  - *Optionally* [Doxygen](http://www.stack.nl/~dimitri/doxygen/) to build
    developer API documentation.
  
  After downloading and extracting the source from a tarball to a directory
  ([see above](#latest-stable-version)), the commands to build rabbitmq-c on most
  systems are:
  
      mkdir build && cd build
      cmake ..
      cmake --build . [--config Release]
  
  The --config Release flag should be used in multi-configuration generators e.g.,
  Visual Studio or XCode.
  
  It is also possible to point the CMake GUI tool at the CMakeLists.txt in the root of
  the source tree and generate build projects or IDE workspace
  
  Installing the library and optionally specifying a prefix can be done with:
  
      cmake -DCMAKE_INSTALL_PREFIX=/usr/local ..
      cmake --build . [--config Release] --target install
  
  More information on CMake can be found on its FAQ (http://www.cmake.org/Wiki/CMake_FAQ)
  
  Other interesting flags that can be passed to CMake:
  
  * `BUILD_EXAMPLES=ON/OFF` toggles building the examples. ON by default.
  * `BUILD_SHARED_LIBS=ON/OFF` toggles building rabbitmq-c as a shared library.
     ON by default.
  * `BUILD_STATIC_LIBS=ON/OFF` toggles building rabbitmq-c as a static library.
     OFF by default.
  * `BUILD_TESTS=ON/OFF` toggles building test code. ON by default.
  * `BUILD_TOOLS=ON/OFF` toggles building the command line tools. By default
     this is ON if the build system can find the POpt header and library.
  * `BUILD_TOOLS_DOCS=ON/OFF` toggles building the man pages for the command line
     tools. By default this is ON if BUILD_TOOLS is ON and the build system can
     find the XmlTo utility.
  * `ENABLE_SSL_SUPPORT=ON/OFF` toggles building rabbitmq-c with SSL support. By
     default this is ON if the OpenSSL headers and library can be found.
  * `BUILD_API_DOCS=ON/OFF` - toggles building the Doxygen API documentation, by
     default this is OFF
  * `RUN_SYSTEM_TESTS=ON/OFF` toggles building the system tests (i.e. tests requiring 
     an accessible RabbitMQ server instance on localhost), by default this is OFF
  
  ## Building RabbitMQ - Using vcpkg
  
  You can download and install RabbitMQ using the [vcpkg](https://github.com/Microsoft/vcpkg) 
  dependency manager:
  
      git clone https://github.com/Microsoft/vcpkg.git
      cd vcpkg
      ./bootstrap-vcpkg.sh
      ./vcpkg integrate install
      ./vcpkg install librabbitmq
  
  The RabbitMQ port in vcpkg is kept up to date by Microsoft team members and 
  community contributors. If the version is out of date, 
  please [create an issue or pull request](https://github.com/Microsoft/vcpkg) on the vcpkg repository.
  
  ## 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:
  
      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:
  
  ## Writing applications using `librabbitmq`
  
  Please see the `examples` directory for short examples of the use of
  the `librabbitmq` library.
  
  ### Threading
  
  You cannot share a socket, an `amqp_connection_state_t`, or a channel
  between threads using `librabbitmq`. The `librabbitmq` library is
  built with event-driven, single-threaded applications in mind, and
  does not yet cater to any of the requirements of `pthread`ed
  applications.
  
  Your applications instead should open an AMQP connection (and an
  associated socket, of course) per thread. If your program needs to
  access an AMQP connection or any of its channels from more than one
  thread, it is entirely responsible for designing and implementing an
  appropriate locking scheme. It will generally be much simpler to have
  a connection exclusive to each thread that needs AMQP service.