Comments (2)
I cannot reproduce the behavior you're describing with the following program:
#include <SimpleAmqpClient/SimpleAmqpClient.h>
#include <iostream>
using namespace AmqpClient;
int main()
{
Channel::ptr_t channel = AmqpClient::Channel::Create();
for (int i = 0; i < 1000000; ++i)
{
try
{
BasicMessage::ptr_t message = AmqpClient::BasicMessage::Create(std::string(1024*128, 'a'));
channel->BasicPublish("", "noroute", message, true, true);
return 0;
}
catch (MessageReturnedException &e)
{
std::cout << "Message delivery error: " << e.what() << std::endl;
}
}
return 0;
}
That said rabbitmq-c, the library that SimpleAmqpClient wraps, has a limitation in the way it handles memory such that memory can only be released if all of the amqp_frame_t objects allocated since the last call to amqp_maybe_release_buffers() are no longer needed.
In your situation its likely SimpleAmqpClient has received other frames, probably from a consumer, from the broker while your code tries repeatedly to send the message, and thus cannot release memory.
There is a known issue that in certain pathological cases where you have two or more active consumers its possible that the library won't release any memory allocated until the AmqpClient::Channel object is destroyed. In the average case I don't this isn't an issue. A fix for this issue requires support from rabbitmq-c for finer grained memory control, which doesn't exist yet.
The workaround for this issue is to use multiple AmqpClient::Channel objects for each different consumer.
from simpleamqpclient.
i review my code ,you are right, while consuming msg,i make a rpc request in one channel,so the memory is pilling up.
from simpleamqpclient.
Related Issues (20)
- Is This Dead? HOT 3
- Classify Exceptions
- Consumer stops consuming inside Docker container (after some idle period) HOT 1
- fatal error: SimpleAmqpClient/SimpleAmqpClient.h: No such file or directory HOT 1
- Channel::OpenOpts::FromUri results in Access violation reading location 0x0000000000000000. HOT 3
- Version 2.4 compatibility with newer Rabbit servers HOT 4
- Latest NuGet of SimpleAmqpClient HOT 1
- Linking the library on Linux using cmake
- Keep alive for long running connections HOT 3
- App crashes when connection closes HOT 2
- `std::bad_alloc()` when header table is empty
- Handle node failure in RabbitMQ cluster
- Support for Quorum queues
- Bug,Exclusive always true!
- Channel can't open
- Compiling with boost 1.82 generates deprecation warnings
- On the issue of creating channels HOT 7
- Test Mate C++ VSCode
- warning: catching polymorphic type 'class AmqpClient::NotFoundException' by value [-Wcatch-value=] HOT 1
- build error with boost 1.53 HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from simpleamqpclient.