//send Message structResult m_producer_sendMessage( char* topic, char* tags, char* keys, char* body, int len){ //std::cout<<topic<<"\t"<<tags<<"\t"<<keys<<"\t"<<body<<"\t"<<len<<"\t"<<std::endl; std::string* sbody = new std::string(body); SendResult result = producer_sendMessage(topic, tags, keys, sbody->c_str(), sbody->size()); //std::cout<<"result.getSendStatus():"<<result.getSendStatus()<<std::endl; structResult structResult1; structResult1.m_sendStatus = result.getSendStatus(); structResult1.m_msgId = result.getMsgId(); structResult1.m_brokerName = result.getMessageQueue().getBrokerName(); structResult1.m_queueId = result.getMessageQueue().getQueueId(); structResult1.m_topic = result.getMessageQueue().getTopic(); structResult1.m_queueOffset = result.getQueueOffset(); return structResult1; }
int main(int argc, char* argv[]) { if (argc<2) { Usage(argv[0]); return 0; } int count = 1000; int size = 32; for (int i=2; i< argc; i++) { if (strcmp(argv[i],"-n")==0) { if (i+1 < argc) { count = atoi(argv[i+1]); i++; } else { Usage(argv[0]); return 0; } } else if (strcmp(argv[i],"-v")==0) { if (i+1 < argc) { size = atoi(argv[i+1]); i++; } else { Usage(argv[0]); return 0; } } else { Usage(argv[0]); return 0; } } DefaultMQProducer producer("please_rename_unique_group_name"); producer.setNamesrvAddr(argv[1]); producer.start(); std::string tags[] = { "TagA", "TagB", "TagC", "TagD", "TagE" }; char key[16]; char* value = new char[size]; strcpy(value,"Hello RocketMQ"); for (int i=14;i<size-8;i++) { char ch; switch (i%3) { case 0: ch='a'; break; case 1: ch='b'; break; case 2: default: ch='c'; break; } *(value+i) = ch; } long long begin = GetCurrentTimeMillis(); int success=0; for (int i = 0; i < count; i++) { try { sprintf(key,"KEY%d",i); sprintf(value + size -8,"%d",i); Message msg("TopicTest",// topic tags[i % 5],// tag key,// key value,// body strlen(value)+1); SendResult sendResult = producer.send(msg); if (sendResult.getSendStatus() == SEND_OK) { success++; } } catch (MQClientException& e) { std::cout<<e<<std::endl; MySleep(1000); } } long long end = GetCurrentTimeMillis(); int time = end - begin; int tps = success*1.0/time*1000.;; printf("success=%d,time=%d,tps=%d\n",success,time,tps); producer.shutdown(); return 0; }