Привет всем, я брат Юн. Мне потребовалось три месяца, чтобы вручную написать сервис платформы текстовых сообщений. platform-sms
,сегодня Открытый исходный код выйдет Beta Версия.
Напишите это Открытый исходный кодпроект Намерение новичка На самом деле это очень просто:"Помогите младшим и средним инженерам по исследованиям и разработкам начать работу с архитектурным проектированием и повысить свою техническую осведомленность."。
В 2018 году как архитектор участвовал в реконструкции СМС-платформы. Сценарии отправки текстовых сообщений включают сервисы погашения, CRM, сервисы продвижения и т. д.
Разные технические команды используют клиентский режим для отправки текстовых сообщений, но его можно условно разделить на четыре типа:
SMS4J
метод проектирования,Поддержка Yimei, Greentown Короткое сообщение доставка.Недостатки клиентской модели в сценариях совместной работы нескольких команд по-прежнему очевидны:
Если операция больше не использует определенный канал SMS, это повлияет на многие команды, и им придется сотрудничать, чтобы изменить конфигурацию и снова выйти в Интернет, что отнимает очень много времени и средств.
Клиенту сложно реализовать определенные функции. Например, время ожидания клиента при отправке SMS-сообщений через трехсторонние каналы из-за случайных обстоятельств (сетевые причины). В это время SMS-сообщения необходимо отправлять на резервные каналы. для обеспечения успешности отправки SMS.
поэтому,В сценариях совместной работы нескольких команд,Короткое сообщение Модель обслуживания должна бытьРежим сервера。
Я сослался на идеи дизайна SMS-сервиса Tencent Cloud:
После завершения исследований и разработки платформы SMS она отвечала потребностям бизнеса на тот момент. Поскольку управление SMS также было унифицировано, что повысило эффективность доступа бизнеса к услугам SMS, это также признали различные технические группы.
По мере накопления опыта я видел SMS-сервисы многих компаний. Основные проблемы заключаются не более чем в двух моментах:
Для удовлетворения потребностей в бизнес-услугах к платформе SMS добавляется слишком много бизнес-функций, что приводит к раздутию функций SMS-сервиса и непреднамеренному добавлению скрытых рисков.
Когда оператору необходимо переключиться со стороннего SMS-канала A на B, стоимость обслуживания при добавлении кода стороннего канала возрастает, поскольку код недостаточно абстрактен.
по этим причинам,Я хочу написать одинмини-версияиз Короткое сообщение, он должен включать в себя следующие функции:
Бизнес-службу не волнует, из какого стороннего SMS-канала отправляется текстовое сообщение. Ему нужно только обеспечить вероятность успешной отправки текстового сообщения.
Поэтому SDK поставлятьизосновнойинтерфейсда:Отправьте СМС по номеру шаблона。
Alibaba Cloud, Tencent Cloud и Huawei Cloud предоставляют интерфейсы для отправки текстовых сообщений в соответствии с шаблонами. В целях единообразного управления шаблонами мы предоставляем только интерфейсы для отправки текстовых сообщений в соответствии с шаблонами.
Короткое сообщение平台需要поставлять业务СлужитьизappKey
иappSecret
, SDK Взаимодействуйте с сервером через фиксированный протокол.
Alibaba Cloud, Tencent Cloud и Huawei Cloud предоставляют интерфейсы управления подписями и шаблонами. Таким образом, на уровне дизайна продукта теоретически мы можем управлять всеми подписями и шаблонами через платформу SMS.
Платформа SMS в настоящее время предоставляет функцию ручной привязки шаблонов SMS, то есть нам необходимо сначала подать заявку на подписи и шаблоны в Alibaba Cloud или Tencent Cloud, а затем привязать их к шаблонам, которые мы создаем на платформе.
Ссылка Открытый исходный кодпроектcanal
изадаптермодуль,Будут ли три партии Короткое канал сообщения API Отдельные модули обслуживаются отдельно, что может значительно повысить удобство сопровождения кода.
Дизайн проекта должен быть простым,из-за этогоиз目标首先да让Краткое введение в проектирование архитектуры для инженеров младшего и среднего уровня.。
Так что я буду Короткое сообщение Платформа предназначена дляОдно приложениеизмодель,Картина Архитектуры следующая:
Платформа Короткое сообщение разделена на две части.,Эти две части можно развернуть независимо, либо файлы внешнего интерфейса можно поместить во внутреннюю часть для создания единого пакета развертывания.
1. Интерфейс: admin-ui
Консольный модуль представляет собой проект vue. После входа в систему администратор может выполнять управление приложениями, каналами, SMS-сообщениями и шаблонами.
2. Бэкэнд: админ-веб
Серверный модуль разделен на пять модулей в соответствии с функциями: уровень управления запросами, уровень бизнес-сервисов, командный процессор, подключаемый модуль адаптера стороннего канала и уровень доступа к базе данных.
1. Создайте базу данных и связанные таблицы.
Создать базу данныхtech_platform
,осуществлятьdoc/sql
в каталоге tech_platform.sql
。
Эффект после выполнения следующий:
2. Измените конфигурацию пакета развертывания.
от Release скачать platform-sms-admin.tar.gz
, после распаковки введите conf
Оглавление 。
редактировать application.yml
документ:
Войдите в каталог bin и запустите службу:
bin/startup.sh
1. Страница входа
После начала службы,Адрес доступа:http://localhost:8089
。
Имя пользователя и пароль хранятся в
conf
каталогapplication.yml
,Имя пользователя и пароль по умолчанию: admin/admin1984.
2. Создайте новое приложение.
Информация о приложении включает имя приложения, appKey
, ключ приложения
,Примечание
。в,приложение key и Ключ используется в клиенте SDK Конфигурация необходима, когда 。
3. Создайте новый трехсторонний SMS-канал.
Примечание. Поскольку запрос SDK Tencent Cloud должен содержать APPID, в бета-версии AppId хранится в атрибуте Attachment.
4. Создайте шаблон
существоватьУправление шаблонами
модуль,НажмитеСоздать новый шаблон
кнопка。
Создать новый шаблончас,Имя подписи должно соответствовать подписи, применяемой каналом.
На рисунке ниже показана подпись автора приложения Tencent Cloud. Созданный автором шаблон должен соответствовать подписи аккаунта Tencent Cloud.
После создания шаблона нам необходимо привязать канал. Сначала необходимо создать шаблон SMS в трехстороннем канале, а затем отправить привязку.
Как показано на рисунке выше, автор создал шаблон SMS с номером 1955325, поскольку нам необходимо привязать шаблон этого канала в интерфейсе привязки. Теоретически шаблон, созданный на платформе SMS, может быть привязан к нескольким каналам.
После завершения привязки вы можете просмотреть список шаблонов на странице управления шаблонами.
Для отправки текстовых сообщений вы можете обратиться к модулю DEMO:
1. Добавьте зависимости
<dependency>
<groupId>com.courage</groupId>
<artifactId>platform-sms-client</artifactId>
<version>${parent.version}</version>
</dependency>
2. Конфигурация клиента
первый в application.yml
Конфигурация следующая:
sms:
smsServerUrl: http://localhost:8089
appKey: qQjEiFzn80v8VM4h
appSecret: 9c465ece754bd26a9be77f3d0e2606bd
Затем напишите класс конфигурации:
@Configuration
public class SmsConfiguration {
@Value("${sms.smsServerUrl}")
private String smsServerUrl;
@Value("${sms.appKey}")
private String appKey;
@Value("${sms.appSecret}")
private String appSecret;
@Bean
public SmsSenderClient createClient() {
SmsConfig smsConfig = new SmsConfig();
smsConfig.setAppKey(appKey);
smsConfig.setSmsServerUrl(smsServerUrl);
smsConfig.setAppSecret(appSecret);
SmsSenderClient smsSenderClient = new SmsSenderClient(smsConfig);
return smsSenderClient;
}
}
3. Одно текстовое сообщение
@Autowired
private SmsSenderClient smsSenderClient;
@GetMapping("/test")
public String test() {
// Номер телефона
String mobile = "15011319235";
// Короткое Сообщение Номер шаблона платформы
String templateId = "555829270636703745";
// Параметры шаблона
Map<String, String> param = new HashMap<String, String>();
param.put("code", "1234");
param.put("time", "10");
SmsSenderResult senderResult = smsSenderClient.sendSmsByTemplateId(mobile, templateId, param);
System.out.println("senderResult:" + JSON.toJSONString(senderResult));
return "hello , first short message !";
}
После вызова интерфейса пользователь получит следующее текстовое сообщение:
Адрес библиотеки кодов:
Брат Юн хочет использовать этот проект в качестве вводного учебного проекта по Архитектуре. Вы можете изучить его в средней школе:
Если моя статья вам полезна,Пожалуйста, помогитеСтавьте лайк, смотрите, делайте репостыодин раз,Ваша поддержка вдохновит меня на создание более качественных статей.,Большое спасибо!