#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace log4cplus; using namespace activemq::core; using namespace decaf::util::concurrent; using namespace decaf::util; using namespace decaf::lang; using namespace cms; using namespace std; int ProducerMQ::Publish(const string &brokerurl, const string &desurl, const string &sendmsg, bool istopic) { LOG d("roducerMQ::Publish"); // d.Debug()<<"brokerurl:"< message; // std::shared_ptr // connection(factory.createConnection("admin", "admin")); std::shared_ptr connection(factory.createConnection()); connection->start(); std::shared_ptr session(connection->createSession()); std::shared_ptr dest; if (!istopic) { dest.reset(session->createQueue(desurl)); } else { dest.reset(session->createTopic(desurl)); } std::shared_ptr producer( session->createProducer(dest.get())); producer->setDeliveryMode(DeliveryMode::NON_PERSISTENT); message.reset(session->createTextMessage(sendmsg)); producer->send(message.get()); // producer->send(message.get(),DeliveryMode::NON_PERSISTENT,4,10000); connection->close(); // d.Debug() << "session " << session.use_count() << std::endl; // d.Debug() << "message " << message.use_count() << std::endl; // activemq::library::ActiveMQCPP::shutdownLibrary(); } catch (CMSException &e) { e.printStackTrace(); // activemq::library::ActiveMQCPP::shutdownLibrary(); } return 0; }