diff --git a/lib/MessageBuilder.cc b/lib/MessageBuilder.cc index 86ff4754..f84b385b 100644 --- a/lib/MessageBuilder.cc +++ b/lib/MessageBuilder.cc @@ -26,7 +26,6 @@ #include "KeyValueImpl.h" #include "LogUtils.h" #include "MessageImpl.h" -#include "ObjectPool.h" #include "PulsarApi.pb.h" #include "SharedBuffer.h" #include "TimeUtils.h" @@ -37,9 +36,7 @@ using namespace pulsar; namespace pulsar { -ObjectPool messagePool; - -std::shared_ptr MessageBuilder::createMessageImpl() { return messagePool.create(); } +std::shared_ptr MessageBuilder::createMessageImpl() { return std::make_shared(); } MessageBuilder::MessageBuilder() { impl_ = createMessageImpl(); } diff --git a/tests/MessageTest.cc b/tests/MessageTest.cc index 7f1ae4d6..af89a609 100644 --- a/tests/MessageTest.cc +++ b/tests/MessageTest.cc @@ -21,6 +21,8 @@ #include #include +#include +#include #include "PulsarFriend.h" #include "lib/MessageImpl.h" @@ -104,6 +106,27 @@ TEST(MessageTest, testMessageBuilder) { } } +TEST(MessageTest, testMessageBuilderConcurrentBuild) { + const int threadCount = 8; + const int messagesPerThread = 10000; + std::vector threads; + threads.reserve(threadCount); + + for (int i = 0; i < threadCount; i++) { + threads.emplace_back([i] { + for (int j = 0; j < messagesPerThread; j++) { + const std::string content = "message-" + std::to_string(i) + "-" + std::to_string(j); + auto msg = MessageBuilder().setContent(content).build(); + ASSERT_EQ(content, msg.getDataAsString()); + } + }); + } + + for (auto& thread : threads) { + thread.join(); + } +} + TEST(MessageTest, testMessageImplKeyValuePayloadCovert) { const char* keyContent = "keyContent"; const char* valueContent = "valueContent";