//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;

}
Beispiel #2
0
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;
}