private ByteBuffer createQueue(String queueName, String address) {
		ClientConnectionLogRecord record = new ClientConnectionLogRecord(
				address, SystemEvent.QUEUE_CREATION,
				"Received request to create queue " + queueName + " from "
						+ address + ".");
		LOGGER.log(record);

		Connection conn = null;
		try {
			conn = dbConnectionDispatcher.retrieveDatabaseConnection();
			CreateQueue.execute(queueName, conn);
			conn.commit();

			record = new ClientConnectionLogRecord(address,
					SystemEvent.QUEUE_CREATION, "Queue " + queueName
							+ " created for " + address + ".", record);
			LOGGER.log(record);

			RequestResponse successResponse = new RequestResponse(
					Status.SUCCESS);
			return ProtocolMessage.toBytes(successResponse);
		} catch (SQLException e) {
			LOGGER.log(new ClientConnectionLogRecord(address,
					SystemEvent.QUEUE_CREATION,
					"Caught exception while trying to create queue " + "for "
							+ address + ".", record, e));

			RequestResponse errorResponse = new RequestResponse(
					Status.EXCEPTION, e.toString());
			if (conn != null)
				try {
					conn.rollback();
				} catch (SQLException e1) {
					logRollbackException(e1);
				}
			return ProtocolMessage.toBytes(errorResponse);
		} catch (QueueAlreadyExistsException e) {
			LOGGER.log(new ClientConnectionLogRecord(address,
					SystemEvent.QUEUE_CREATION,
					"Responded with failure to create queue request from "
							+ address + " because queue " + queueName
							+ " already exists.", record));

			RequestResponse failureResponse = new RequestResponse(
					Status.QUEUE_EXISTS);
			if (conn != null)
				try {
					conn.rollback();
				} catch (SQLException e1) {
					logRollbackException(e1);
				}
			return ProtocolMessage.toBytes(failureResponse);
		} finally {
			if (conn != null) {
				try {
					conn.close();
				} catch (SQLException e) {
					logCloseException(e);
				}
			}
		}
	}