Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
CAP
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
tsai
CAP
Commits
8d564cde
Commit
8d564cde
authored
Sep 29, 2017
by
Savorboard
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'develop' of
https://github.com/dotnetcore/CAP
into develop
parents
c69d528e
a16041cd
Changes
83
Hide whitespace changes
Inline
Side-by-side
Showing
83 changed files
with
1177 additions
and
1139 deletions
+1177
-1139
CapPublisher.cs
src/DotNetCore.CAP.MySql/CapPublisher.cs
+2
-2
IAdditionalProcessor.Default.cs
src/DotNetCore.CAP.MySql/IAdditionalProcessor.Default.cs
+3
-7
MySqlStorageConnection.cs
src/DotNetCore.CAP.MySql/MySqlStorageConnection.cs
+1
-1
MySqlStorageTransaction.cs
src/DotNetCore.CAP.MySql/MySqlStorageTransaction.cs
+1
-1
CapPublisher.cs
src/DotNetCore.CAP.PostgreSql/CapPublisher.cs
+2
-2
PostgreSqlStorage.cs
src/DotNetCore.CAP.PostgreSql/PostgreSqlStorage.cs
+0
-1
PostgreSqlStorageConnection.cs
src/DotNetCore.CAP.PostgreSql/PostgreSqlStorageConnection.cs
+1
-1
PostgreSqlStorageTransaction.cs
...DotNetCore.CAP.PostgreSql/PostgreSqlStorageTransaction.cs
+1
-1
CAP.RabbiMQOptions.cs
src/DotNetCore.CAP.RabbitMQ/CAP.RabbiMQOptions.cs
+1
-3
IConnectionPool.cs
src/DotNetCore.CAP.RabbitMQ/IConnectionPool.cs
+1
-4
RabbitMQConsumerClient.cs
src/DotNetCore.CAP.RabbitMQ/RabbitMQConsumerClient.cs
+2
-2
RabbitMQConsumerClientFactory.cs
src/DotNetCore.CAP.RabbitMQ/RabbitMQConsumerClientFactory.cs
+1
-4
CapPublisher.cs
src/DotNetCore.CAP.SqlServer/CapPublisher.cs
+2
-2
IAdditionalProcessor.Default.cs
src/DotNetCore.CAP.SqlServer/IAdditionalProcessor.Default.cs
+2
-6
SqlServerMonitoringApi.cs
src/DotNetCore.CAP.SqlServer/SqlServerMonitoringApi.cs
+31
-44
SqlServerStorageConnection.cs
src/DotNetCore.CAP.SqlServer/SqlServerStorageConnection.cs
+1
-1
SqlServerStorageTransaction.cs
src/DotNetCore.CAP.SqlServer/SqlServerStorageTransaction.cs
+1
-1
IConsumerServiceSelector.cs
src/DotNetCore.CAP/Abstractions/IConsumerServiceSelector.cs
+1
-3
ModelBindingResult.cs
...tCore.CAP/Abstractions/ModelBinding/ModelBindingResult.cs
+1
-1
TopicAttribute.cs
src/DotNetCore.CAP/Abstractions/TopicAttribute.cs
+1
-5
CAP.AppBuilderExtensions.cs
src/DotNetCore.CAP/CAP.AppBuilderExtensions.cs
+2
-1
CAP.Builder.cs
src/DotNetCore.CAP/CAP.Builder.cs
+1
-1
CAP.Options.cs
src/DotNetCore.CAP/CAP.Options.cs
+1
-1
CAP.ServiceCollectionExtensions.cs
src/DotNetCore.CAP/CAP.ServiceCollectionExtensions.cs
+1
-2
CapCache.cs
src/DotNetCore.CAP/CapCache.cs
+39
-39
CAP.DashboardMiddleware.cs
src/DotNetCore.CAP/Dashboard/CAP.DashboardMiddleware.cs
+10
-13
CAP.DashboardOptions.cs
src/DotNetCore.CAP/Dashboard/CAP.DashboardOptions.cs
+2
-3
CAP.DashboardOptionsExtensions.cs
...otNetCore.CAP/Dashboard/CAP.DashboardOptionsExtensions.cs
+3
-5
cap.css
src/DotNetCore.CAP/Dashboard/Content/css/cap.css
+7
-3
cap.js
src/DotNetCore.CAP/Dashboard/Content/js/cap.js
+2
-2
Strings.Designer.cs
...DotNetCore.CAP/Dashboard/Content/resx/Strings.Designer.cs
+21
-3
Strings.resx
src/DotNetCore.CAP/Dashboard/Content/resx/Strings.resx
+8
-2
Strings.zh.resx
src/DotNetCore.CAP/Dashboard/Content/resx/Strings.zh.resx
+7
-1
DashboardResponse.cs
src/DotNetCore.CAP/Dashboard/DashboardResponse.cs
+5
-6
DashboardRoutes.cs
src/DotNetCore.CAP/Dashboard/DashboardRoutes.cs
+0
-5
EmbeddedResourceDispatcher.cs
src/DotNetCore.CAP/Dashboard/EmbeddedResourceDispatcher.cs
+10
-6
DownstreamUrl.cs
src/DotNetCore.CAP/Dashboard/GatewayProxy/DownstreamUrl.cs
+1
-1
GatewayProxyMiddleware.cs
...Core.CAP/Dashboard/GatewayProxy/GatewayProxyMiddleware.cs
+4
-7
HttpClientHttpRequester.cs
...shboard/GatewayProxy/Requester/HttpClientHttpRequester.cs
+1
-1
IHttpClientBuilder.cs
...AP/Dashboard/GatewayProxy/Requester/IHttpClientBuilder.cs
+3
-1
MemoryHttpClientCache.cs
...Dashboard/GatewayProxy/Requester/MemoryHttpClientCache.cs
+4
-8
HtmlHelper.cs
src/DotNetCore.CAP/Dashboard/HtmlHelper.cs
+6
-25
JobHistoryRenderer.cs
src/DotNetCore.CAP/Dashboard/JobHistoryRenderer.cs
+0
-2
JsonDispatcher.cs
src/DotNetCore.CAP/Dashboard/JsonDispatcher.cs
+0
-3
BlockMetric.cs
src/DotNetCore.CAP/Dashboard/Pages/BlockMetric.cs
+1
-1
Breadcrumbs.cs
src/DotNetCore.CAP/Dashboard/Pages/Breadcrumbs.cs
+1
-1
NodePage.cs
src/DotNetCore.CAP/Dashboard/Pages/NodePage.cs
+3
-4
PublishedPage.cs
src/DotNetCore.CAP/Dashboard/Pages/PublishedPage.cs
+3
-6
PublishedPage.cshtml
src/DotNetCore.CAP/Dashboard/Pages/PublishedPage.cshtml
+12
-2
PublishedPage1.generated.cs
...otNetCore.CAP/Dashboard/Pages/PublishedPage1.generated.cs
+443
-385
ReceivedPage.cs
src/DotNetCore.CAP/Dashboard/Pages/ReceivedPage.cs
+3
-6
ReceivedPage.cshtml
src/DotNetCore.CAP/Dashboard/Pages/ReceivedPage.cshtml
+13
-3
ReceivedPage.generated.cs
src/DotNetCore.CAP/Dashboard/Pages/ReceivedPage.generated.cs
+421
-359
SidebarMenu.cs
src/DotNetCore.CAP/Dashboard/Pages/SidebarMenu.cs
+2
-3
SubscriberPage.cshtml
src/DotNetCore.CAP/Dashboard/Pages/SubscriberPage.cshtml
+1
-1
RouteCollectionExtensions.cs
src/DotNetCore.CAP/Dashboard/RouteCollectionExtensions.cs
+3
-3
UrlHelper.cs
src/DotNetCore.CAP/Dashboard/UrlHelper.cs
+1
-2
IBootstrapper.Default.cs
src/DotNetCore.CAP/IBootstrapper.Default.cs
+1
-2
IConsumerHandler.Default.cs
src/DotNetCore.CAP/IConsumerHandler.Default.cs
+5
-12
IProcessingServer.cs
src/DotNetCore.CAP/IProcessingServer.cs
+1
-0
IQueueExecutor.Publish.Base.cs
src/DotNetCore.CAP/IQueueExecutor.Publish.Base.cs
+2
-3
IQueueExecutor.Subscibe.cs
src/DotNetCore.CAP/IQueueExecutor.Subscibe.cs
+1
-1
Helper.cs
src/DotNetCore.CAP/Infrastructure/Helper.cs
+8
-9
IConsumerInvoker.Default.cs
src/DotNetCore.CAP/Internal/IConsumerInvoker.Default.cs
+4
-13
IConsumerServiceSelector.Default.cs
...tNetCore.CAP/Internal/IConsumerServiceSelector.Default.cs
+5
-5
IModelBinder.SimpleType.cs
src/DotNetCore.CAP/Internal/IModelBinder.SimpleType.cs
+1
-1
ModelBinderFactory.cs
src/DotNetCore.CAP/Internal/ModelBinderFactory.cs
+1
-1
LoggerExtensions.cs
src/DotNetCore.CAP/LoggerExtensions.cs
+5
-5
CAP.DiscoveryOptions.cs
src/DotNetCore.CAP/NodeDiscovery/CAP.DiscoveryOptions.cs
+3
-2
CAP.DiscoveryOptionsExtensions.cs
...tCore.CAP/NodeDiscovery/CAP.DiscoveryOptionsExtensions.cs
+1
-3
IDiscoveryProviderFactory.Default.cs
...re.CAP/NodeDiscovery/IDiscoveryProviderFactory.Default.cs
+1
-3
IDiscoveryProviderFactory.cs
...DotNetCore.CAP/NodeDiscovery/IDiscoveryProviderFactory.cs
+2
-6
INodeDiscoveryProvider.Consul.cs
...etCore.CAP/NodeDiscovery/INodeDiscoveryProvider.Consul.cs
+4
-3
INodeDiscoveryProvider.cs
src/DotNetCore.CAP/NodeDiscovery/INodeDiscoveryProvider.cs
+1
-3
IProcessingServer.Consul.cs
src/DotNetCore.CAP/NodeDiscovery/IProcessingServer.Consul.cs
+7
-11
Node.cs
src/DotNetCore.CAP/NodeDiscovery/Node.cs
+1
-5
OperateResult.cs
src/DotNetCore.CAP/OperateResult.cs
+5
-2
IDispatcher.Default.cs
src/DotNetCore.CAP/Processor/IDispatcher.Default.cs
+3
-13
IProcessingServer.Cap.cs
src/DotNetCore.CAP/Processor/IProcessingServer.Cap.cs
+3
-3
IProcessor.PublishQueuer.cs
src/DotNetCore.CAP/Processor/IProcessor.PublishQueuer.cs
+3
-3
IProcessor.SubscribeQueuer.cs
src/DotNetCore.CAP/Processor/IProcessor.SubscribeQueuer.cs
+7
-7
IState.Succeeded.cs
src/DotNetCore.CAP/Processor/States/IState.Succeeded.cs
+1
-1
StateData.cs
src/DotNetCore.CAP/StateData.cs
+0
-13
No files found.
src/DotNetCore.CAP.MySql/CapPublisher.cs
View file @
8d564cde
...
...
@@ -52,14 +52,14 @@ namespace DotNetCore.CAP.MySql
{
dbConnection
.
Execute
(
PrepareSql
(),
message
,
dbTransaction
);
_logger
.
LogInformation
(
"Published Message has been persisted in the database. name:"
+
message
.
ToString
()
);
_logger
.
LogInformation
(
"Published Message has been persisted in the database. name:"
+
message
);
}
protected
override
async
Task
ExecuteAsync
(
IDbConnection
dbConnection
,
IDbTransaction
dbTransaction
,
CapPublishedMessage
message
)
{
await
dbConnection
.
ExecuteAsync
(
PrepareSql
(),
message
,
dbTransaction
);
_logger
.
LogInformation
(
"Published Message has been persisted in the database. name:"
+
message
.
ToString
()
);
_logger
.
LogInformation
(
"Published Message has been persisted in the database. name:"
+
message
);
}
public
async
Task
PublishAsync
(
CapPublishedMessage
message
)
...
...
src/DotNetCore.CAP.MySql/IAdditionalProcessor.Default.cs
View file @
8d564cde
...
...
@@ -9,7 +9,6 @@ namespace DotNetCore.CAP.MySql
{
internal
class
DefaultAdditionalProcessor
:
IAdditionalProcessor
{
private
readonly
IServiceProvider
_provider
;
private
readonly
ILogger
_logger
;
private
readonly
MySqlOptions
_options
;
...
...
@@ -17,13 +16,10 @@ namespace DotNetCore.CAP.MySql
private
readonly
TimeSpan
_delay
=
TimeSpan
.
FromSeconds
(
1
);
private
readonly
TimeSpan
_waitingInterval
=
TimeSpan
.
FromMinutes
(
5
);
public
DefaultAdditionalProcessor
(
IServiceProvider
provider
,
ILogger
<
DefaultAdditionalProcessor
>
logger
,
public
DefaultAdditionalProcessor
(
ILogger
<
DefaultAdditionalProcessor
>
logger
,
MySqlOptions
mysqlOptions
)
{
_logger
=
logger
;
_provider
=
provider
;
_options
=
mysqlOptions
;
}
...
...
@@ -31,14 +27,14 @@ namespace DotNetCore.CAP.MySql
{
_logger
.
LogDebug
(
"Collecting expired entities."
);
var
tables
=
new
string
[]{
var
tables
=
new
[]{
$"
{
_options
.
TableNamePrefix
}
.published"
,
$"
{
_options
.
TableNamePrefix
}
.received"
};
foreach
(
var
table
in
tables
)
{
var
removedCount
=
0
;
int
removedCount
;
do
{
using
(
var
connection
=
new
MySqlConnection
(
_options
.
ConnectionString
))
...
...
src/DotNetCore.CAP.MySql/MySqlStorageConnection.cs
View file @
8d564cde
...
...
@@ -129,7 +129,7 @@ VALUES(@Name,@Group,@Content,@Retries,@Added,@ExpiresAt,@StatusName);";
var
connection
=
new
MySqlConnection
(
_options
.
ConnectionString
);
await
connection
.
OpenAsync
();
var
transaction
=
connection
.
BeginTransaction
(
IsolationLevel
.
ReadCommitted
);
FetchedMessage
fetchedMessage
=
null
;
FetchedMessage
fetchedMessage
;
try
{
fetchedMessage
=
await
connection
.
QueryFirstOrDefaultAsync
<
FetchedMessage
>(
sql
,
args
,
transaction
);
...
...
src/DotNetCore.CAP.MySql/MySqlStorageTransaction.cs
View file @
8d564cde
...
...
@@ -7,7 +7,7 @@ using MySql.Data.MySqlClient;
namespace
DotNetCore.CAP.MySql
{
public
class
MySqlStorageTransaction
:
IStorageTransaction
,
IDisposable
public
class
MySqlStorageTransaction
:
IStorageTransaction
{
private
readonly
string
_prefix
;
...
...
src/DotNetCore.CAP.PostgreSql/CapPublisher.cs
View file @
8d564cde
...
...
@@ -52,14 +52,14 @@ namespace DotNetCore.CAP.PostgreSql
{
dbConnection
.
Execute
(
PrepareSql
(),
message
,
dbTransaction
);
_logger
.
LogInformation
(
"Published Message has been persisted in the database. name:"
+
message
.
ToString
()
);
_logger
.
LogInformation
(
"Published Message has been persisted in the database. name:"
+
message
);
}
protected
override
async
Task
ExecuteAsync
(
IDbConnection
dbConnection
,
IDbTransaction
dbTransaction
,
CapPublishedMessage
message
)
{
await
dbConnection
.
ExecuteAsync
(
PrepareSql
(),
message
,
dbTransaction
);
_logger
.
LogInformation
(
"Published Message has been persisted in the database. name:"
+
message
.
ToString
()
);
_logger
.
LogInformation
(
"Published Message has been persisted in the database. name:"
+
message
);
}
public
async
Task
PublishAsync
(
CapPublishedMessage
message
)
...
...
src/DotNetCore.CAP.PostgreSql/PostgreSqlStorage.cs
View file @
8d564cde
...
...
@@ -2,7 +2,6 @@ using System.Threading;
using
System.Threading.Tasks
;
using
Dapper
;
using
DotNetCore.CAP.Dashboard
;
using
Microsoft.EntityFrameworkCore
;
using
Microsoft.Extensions.Logging
;
using
Npgsql
;
...
...
src/DotNetCore.CAP.PostgreSql/PostgreSqlStorageConnection.cs
View file @
8d564cde
...
...
@@ -113,7 +113,7 @@ namespace DotNetCore.CAP.PostgreSql
var
connection
=
new
NpgsqlConnection
(
_options
.
ConnectionString
);
await
connection
.
OpenAsync
();
var
transaction
=
connection
.
BeginTransaction
(
IsolationLevel
.
ReadCommitted
);
FetchedMessage
fetchedMessage
=
null
;
FetchedMessage
fetchedMessage
;
try
{
fetchedMessage
=
await
connection
.
QueryFirstOrDefaultAsync
<
FetchedMessage
>(
sql
,
args
,
transaction
);
...
...
src/DotNetCore.CAP.PostgreSql/PostgreSqlStorageTransaction.cs
View file @
8d564cde
...
...
@@ -7,7 +7,7 @@ using Npgsql;
namespace
DotNetCore.CAP.PostgreSql
{
public
class
PostgreSqlStorageTransaction
:
IStorageTransaction
,
IDisposable
public
class
PostgreSqlStorageTransaction
:
IStorageTransaction
{
private
readonly
string
_schema
;
...
...
src/DotNetCore.CAP.RabbitMQ/CAP.RabbiMQOptions.cs
View file @
8d564cde
using
System
;
// ReSharper disable once CheckNamespace
// ReSharper disable once CheckNamespace
namespace
DotNetCore.CAP
{
public
class
RabbitMQOptions
...
...
src/DotNetCore.CAP.RabbitMQ/IConnectionPool.cs
View file @
8d564cde
using
System
;
using
System.Collections.Generic
;
using
System.Text
;
using
RabbitMQ.Client
;
using
RabbitMQ.Client
;
namespace
DotNetCore.CAP.RabbitMQ
{
...
...
src/DotNetCore.CAP.RabbitMQ/RabbitMQConsumerClient.cs
View file @
8d564cde
...
...
@@ -13,8 +13,8 @@ namespace DotNetCore.CAP.RabbitMQ
private
readonly
string
_exchageName
;
private
readonly
string
_queueName
;
private
readonly
RabbitMQOptions
_rabbitMQOptions
;
private
readonly
ConnectionPool
_connectionPool
;
private
ConnectionPool
_connectionPool
;
private
IModel
_channel
;
private
ulong
_deliveryTag
;
...
...
@@ -45,7 +45,7 @@ namespace DotNetCore.CAP.RabbitMQ
type
:
RabbitMQOptions
.
ExchangeType
,
durable
:
true
);
var
arguments
=
new
Dictionary
<
string
,
object
>
{
{
"x-message-ttl"
,
(
int
)
_rabbitMQOptions
.
QueueMessageExpires
}
};
var
arguments
=
new
Dictionary
<
string
,
object
>
{
{
"x-message-ttl"
,
_rabbitMQOptions
.
QueueMessageExpires
}
};
_channel
.
QueueDeclare
(
_queueName
,
durable
:
true
,
exclusive
:
false
,
...
...
src/DotNetCore.CAP.RabbitMQ/RabbitMQConsumerClientFactory.cs
View file @
8d564cde
using
Microsoft.Extensions.Options
;
using
RabbitMQ.Client
;
namespace
DotNetCore.CAP.RabbitMQ
namespace
DotNetCore.CAP.RabbitMQ
{
internal
sealed
class
RabbitMQConsumerClientFactory
:
IConsumerClientFactory
{
...
...
src/DotNetCore.CAP.SqlServer/CapPublisher.cs
View file @
8d564cde
...
...
@@ -52,14 +52,14 @@ namespace DotNetCore.CAP.SqlServer
{
dbConnection
.
Execute
(
PrepareSql
(),
message
,
dbTransaction
);
_logger
.
LogInformation
(
"Published Message has been persisted in the database. name:"
+
message
.
ToString
()
);
_logger
.
LogInformation
(
"Published Message has been persisted in the database. name:"
+
message
);
}
protected
override
async
Task
ExecuteAsync
(
IDbConnection
dbConnection
,
IDbTransaction
dbTransaction
,
CapPublishedMessage
message
)
{
await
dbConnection
.
ExecuteAsync
(
PrepareSql
(),
message
,
dbTransaction
);
_logger
.
LogInformation
(
"Published Message has been persisted in the database. name:"
+
message
.
ToString
()
);
_logger
.
LogInformation
(
"Published Message has been persisted in the database. name:"
+
message
);
}
public
async
Task
PublishAsync
(
CapPublishedMessage
message
)
...
...
src/DotNetCore.CAP.SqlServer/IAdditionalProcessor.Default.cs
View file @
8d564cde
...
...
@@ -9,7 +9,6 @@ namespace DotNetCore.CAP.SqlServer
{
public
class
DefaultAdditionalProcessor
:
IAdditionalProcessor
{
private
readonly
IServiceProvider
_provider
;
private
readonly
ILogger
_logger
;
private
readonly
SqlServerOptions
_options
;
...
...
@@ -22,13 +21,10 @@ namespace DotNetCore.CAP.SqlServer
"Published"
,
"Received"
};
public
DefaultAdditionalProcessor
(
IServiceProvider
provider
,
ILogger
<
DefaultAdditionalProcessor
>
logger
,
public
DefaultAdditionalProcessor
(
ILogger
<
DefaultAdditionalProcessor
>
logger
,
SqlServerOptions
sqlServerOptions
)
{
_logger
=
logger
;
_provider
=
provider
;
_options
=
sqlServerOptions
;
}
...
...
@@ -38,7 +34,7 @@ namespace DotNetCore.CAP.SqlServer
foreach
(
var
table
in
Tables
)
{
var
removedCount
=
0
;
int
removedCount
;
do
{
using
(
var
connection
=
new
SqlConnection
(
_options
.
ConnectionString
))
...
...
src/DotNetCore.CAP.SqlServer/SqlServerMonitoringApi.cs
View file @
8d564cde
...
...
@@ -18,11 +18,8 @@ namespace DotNetCore.CAP.SqlServer
public
SqlServerMonitoringApi
(
IStorage
storage
,
SqlServerOptions
options
)
{
if
(
storage
==
null
)
throw
new
ArgumentNullException
(
nameof
(
storage
));
if
(
options
==
null
)
throw
new
ArgumentNullException
(
nameof
(
options
));
_options
=
options
;
_storage
=
storage
as
SqlServerStorage
;
_options
=
options
??
throw
new
ArgumentNullException
(
nameof
(
options
));
_storage
=
storage
as
SqlServerStorage
??
throw
new
ArgumentNullException
(
nameof
(
storage
));
}
...
...
@@ -35,7 +32,7 @@ select count(Id) from [{0}].Published with (nolock) where StatusName = N'Succeed
select count(Id) from [{0}].Received with (nolock) where StatusName = N'Succeeded';
select count(Id) from [{0}].Published with (nolock) where StatusName = N'Failed';
select count(Id) from [{0}].Received with (nolock) where StatusName = N'Failed';
select count(Id) from [{0}].Published with (nolock) where StatusName
= N'Processing'
;
select count(Id) from [{0}].Published with (nolock) where StatusName
in (N'Processing',N'Scheduled',N'Enqueued')
;
select count(Id) from [{0}].Received with (nolock) where StatusName = N'Processing';"
,
_options
.
Schema
);
...
...
@@ -74,11 +71,18 @@ _options.Schema);
public
IList
<
MessageDto
>
Messages
(
MessageQueryDto
queryDto
)
{
var
tableName
=
queryDto
.
MessageType
==
M
odels
.
M
essageType
.
Publish
?
"Published"
:
"Received"
;
var
tableName
=
queryDto
.
MessageType
==
MessageType
.
Publish
?
"Published"
:
"Received"
;
var
where
=
string
.
Empty
;
if
(!
string
.
IsNullOrEmpty
(
queryDto
.
StatusName
))
{
where
+=
" and statusname=@StatusName"
;
if
(
string
.
Equals
(
queryDto
.
StatusName
,
ProcessingState
.
StateName
,
StringComparison
.
CurrentCultureIgnoreCase
))
{
where
+=
" and statusname in (N'Processing',N'Scheduled',N'Enqueued')"
;
}
else
{
where
+=
" and statusname=@StatusName"
;
}
}
if
(!
string
.
IsNullOrEmpty
(
queryDto
.
Name
))
{
...
...
@@ -95,71 +99,53 @@ _options.Schema);
var
sqlQuery
=
$"select * from [
{
_options
.
Schema
}
].
{
tableName
}
where 1=1
{
where
}
order by Added desc offset @Offset rows fetch next @Limit rows only"
;
return
UseConnection
(
conn
=>
return
UseConnection
(
conn
=>
conn
.
Query
<
MessageDto
>(
sqlQuery
,
new
{
return
conn
.
Query
<
MessageDto
>(
sqlQuery
,
new
{
StatusName
=
queryDto
.
StatusName
,
Group
=
queryDto
.
Group
,
Name
=
queryDto
.
Name
,
Content
=
queryDto
.
Content
,
Offset
=
queryDto
.
CurrentPage
*
queryDto
.
PageSize
,
Limit
=
queryDto
.
PageSize
,
}).
ToList
();
});
StatusName
=
queryDto
.
StatusName
,
Group
=
queryDto
.
Group
,
Name
=
queryDto
.
Name
,
Content
=
queryDto
.
Content
,
Offset
=
queryDto
.
CurrentPage
*
queryDto
.
PageSize
,
Limit
=
queryDto
.
PageSize
,
}).
ToList
());
}
public
int
PublishedFailedCount
()
{
return
UseConnection
(
conn
=>
{
return
GetNumberOfMessage
(
conn
,
"Published"
,
StatusName
.
Failed
);
});
return
UseConnection
(
conn
=>
GetNumberOfMessage
(
conn
,
"Published"
,
StatusName
.
Failed
));
}
public
int
PublishedProcessingCount
()
{
return
UseConnection
(
conn
=>
{
return
GetNumberOfMessage
(
conn
,
"Published"
,
StatusName
.
Processing
);
});
return
UseConnection
(
conn
=>
GetNumberOfMessage
(
conn
,
"Published"
,
StatusName
.
Processing
));
}
public
int
PublishedSucceededCount
()
{
return
UseConnection
(
conn
=>
{
return
GetNumberOfMessage
(
conn
,
"Published"
,
StatusName
.
Succeeded
);
});
return
UseConnection
(
conn
=>
GetNumberOfMessage
(
conn
,
"Published"
,
StatusName
.
Succeeded
));
}
public
int
ReceivedFailedCount
()
{
return
UseConnection
(
conn
=>
{
return
GetNumberOfMessage
(
conn
,
"Received"
,
StatusName
.
Failed
);
});
return
UseConnection
(
conn
=>
GetNumberOfMessage
(
conn
,
"Received"
,
StatusName
.
Failed
));
}
public
int
ReceivedProcessingCount
()
{
return
UseConnection
(
conn
=>
{
return
GetNumberOfMessage
(
conn
,
"Received"
,
StatusName
.
Processing
);
});
return
UseConnection
(
conn
=>
GetNumberOfMessage
(
conn
,
"Received"
,
StatusName
.
Processing
));
}
public
int
ReceivedSucceededCount
()
{
return
UseConnection
(
conn
=>
{
return
GetNumberOfMessage
(
conn
,
"Received"
,
StatusName
.
Succeeded
);
});
return
UseConnection
(
conn
=>
GetNumberOfMessage
(
conn
,
"Received"
,
StatusName
.
Succeeded
));
}
private
int
GetNumberOfMessage
(
IDbConnection
connection
,
string
tableName
,
string
statusName
)
{
var
sqlQuery
=
$"select count(Id) from [
{
_options
.
Schema
}
].
{
tableName
}
with (nolock) where StatusName = @state"
;
var
sqlQuery
=
statusName
==
StatusName
.
Processing
?
$"select count(Id) from [
{
_options
.
Schema
}
].
{
tableName
}
with (nolock) where StatusName in (N'Processing',N'Scheduled',N'Enqueued')"
:
$"select count(Id) from [
{
_options
.
Schema
}
].
{
tableName
}
with (nolock) where StatusName = @state"
;
var
count
=
connection
.
ExecuteScalar
<
int
>(
sqlQuery
,
new
{
state
=
statusName
});
return
count
;
}
...
...
@@ -190,6 +176,7 @@ _options.Schema);
string
statusName
,
IDictionary
<
string
,
DateTime
>
keyMaps
)
{
//SQL Server 2012+
string
sqlQuery
=
$@"
with aggr as (
...
...
src/DotNetCore.CAP.SqlServer/SqlServerStorageConnection.cs
View file @
8d564cde
...
...
@@ -139,7 +139,7 @@ VALUES(@Name,@Group,@Content,@Retries,@Added,@ExpiresAt,@StatusName);";
var
connection
=
new
SqlConnection
(
_options
.
ConnectionString
);
await
connection
.
OpenAsync
();
var
transaction
=
connection
.
BeginTransaction
(
IsolationLevel
.
ReadCommitted
);
FetchedMessage
fetchedMessage
=
null
;
FetchedMessage
fetchedMessage
;
try
{
fetchedMessage
=
await
connection
.
QueryFirstOrDefaultAsync
<
FetchedMessage
>(
sql
,
args
,
transaction
);
...
...
src/DotNetCore.CAP.SqlServer/SqlServerStorageTransaction.cs
View file @
8d564cde
...
...
@@ -7,7 +7,7 @@ using DotNetCore.CAP.Models;
namespace
DotNetCore.CAP.SqlServer
{
public
class
SqlServerStorageTransaction
:
IStorageTransaction
,
IDisposable
public
class
SqlServerStorageTransaction
:
IStorageTransaction
{
private
readonly
string
_schema
;
...
...
src/DotNetCore.CAP/Abstractions/IConsumerServiceSelector.cs
View file @
8d564cde
using
System
;
using
System.Collections.Generic
;
using
System.Collections.Generic
;
namespace
DotNetCore.CAP.Abstractions
{
...
...
@@ -10,7 +9,6 @@ namespace DotNetCore.CAP.Abstractions
{
/// <summary>
/// Selects a set of <see cref="ConsumerExecutorDescriptor"/> candidates for the current message associated with
/// <paramref name="provider"/>.
/// </summary>
/// <returns>A set of <see cref="ConsumerExecutorDescriptor"/> candidates or <c>null</c>.</returns>
IReadOnlyList
<
ConsumerExecutorDescriptor
>
SelectCandidates
();
...
...
src/DotNetCore.CAP/Abstractions/ModelBinding/ModelBindingResult.cs
View file @
8d564cde
...
...
@@ -77,7 +77,7 @@ namespace DotNetCore.CAP.Abstractions.ModelBinding
{
return
IsSuccess
==
other
.
IsSuccess
&&
object
.
Equals
(
Model
,
other
.
Model
);
Equals
(
Model
,
other
.
Model
);
}
/// <summary>
...
...
src/DotNetCore.CAP/Abstractions/TopicAttribute.cs
View file @
8d564cde
...
...
@@ -2,6 +2,7 @@
namespace
DotNetCore.CAP.Abstractions
{
/// <inheritdoc />
/// <summary>
/// An abstract attribute that for kafka attribute or rabbitmq attribute
/// </summary>
...
...
@@ -23,10 +24,5 @@ namespace DotNetCore.CAP.Abstractions
/// rabbitmq --> queue.name
/// </summary>
public
string
Group
{
get
;
set
;
}
=
"cap.default.group"
;
/// <summary>
/// unused now
/// </summary>
public
bool
IsOneWay
{
get
;
set
;
}
}
}
\ No newline at end of file
src/DotNetCore.CAP/CAP.AppBuilderExtensions.cs
View file @
8d564cde
...
...
@@ -3,6 +3,7 @@ using DotNetCore.CAP;
using
DotNetCore.CAP.Dashboard.GatewayProxy
;
using
Microsoft.Extensions.DependencyInjection
;
// ReSharper disable once CheckNamespace
namespace
Microsoft.AspNetCore.Builder
{
/// <summary>
...
...
@@ -52,7 +53,7 @@ namespace Microsoft.AspNetCore.Builder
var
marker
=
app
.
ApplicationServices
.
GetService
<
CapMarkerService
>();
if
(
marker
==
null
)
{
throw
new
InvalidOperationException
(
"AddCap must be called on the service collection. eg: services.AddCap(...)"
);
throw
new
InvalidOperationException
(
"AddCap
()
must be called on the service collection. eg: services.AddCap(...)"
);
}
var
messageQueuemarker
=
app
.
ApplicationServices
.
GetService
<
CapMessageQueueMakerService
>();
...
...
src/DotNetCore.CAP/CAP.Builder.cs
View file @
8d564cde
...
...
@@ -39,7 +39,7 @@ namespace DotNetCore.CAP
/// <summary>
/// Gets the <see cref="IServiceCollection"/> where MVC services are configured.
/// </summary>
public
IServiceCollection
Services
{
get
;
private
set
;
}
public
IServiceCollection
Services
{
get
;
}
/// <summary>
/// Adds a scoped service of the type specified in serviceType with an implementation
...
...
src/DotNetCore.CAP/CAP.Options.cs
View file @
8d564cde
...
...
@@ -8,7 +8,7 @@ namespace DotNetCore.CAP
/// </summary>
public
class
CapOptions
{
internal
IList
<
ICapOptionsExtension
>
Extensions
{
get
;
private
set
;
}
internal
IList
<
ICapOptionsExtension
>
Extensions
{
get
;
}
/// <summary>
/// Default value for polling delay timeout, in seconds.
...
...
src/DotNetCore.CAP/CAP.ServiceCollectionExtensions.cs
View file @
8d564cde
using
System
;
using
System.Collections.Generic
;
using
System.Reflection
;
using
DotNetCore.CAP
;
using
DotNetCore.CAP.Abstractions
;
using
DotNetCore.CAP.Infrastructure
;
using
DotNetCore.CAP.Internal
;
using
DotNetCore.CAP.Processor
;
using
DotNetCore.CAP.Processor.States
;
using
Microsoft.Extensions.DependencyInjection.Extensions
;
// ReSharper disable once CheckNamespace
namespace
Microsoft.Extensions.DependencyInjection
{
/// <summary>
...
...
src/DotNetCore.CAP/CapCache.cs
View file @
8d564cde
...
...
@@ -19,9 +19,9 @@ namespace DotNetCore.CAP
/// </summary>
public
Cache
()
{
}
private
Dictionary
<
K
,
T
>
cache
=
new
Dictionary
<
K
,
T
>();
private
Dictionary
<
K
,
Timer
>
timers
=
new
Dictionary
<
K
,
Timer
>();
private
ReaderWriterLockSlim
locker
=
new
ReaderWriterLockSlim
();
private
Dictionary
<
K
,
T
>
_
cache
=
new
Dictionary
<
K
,
T
>();
private
Dictionary
<
K
,
Timer
>
_
timers
=
new
Dictionary
<
K
,
Timer
>();
private
ReaderWriterLockSlim
_
locker
=
new
ReaderWriterLockSlim
();
#
endregion
#
region
IDisposable
implementation
&
Clear
...
...
@@ -51,7 +51,7 @@ namespace DotNetCore.CAP
{
// Dispose managed resources.
Clear
();
locker
.
Dispose
();
_
locker
.
Dispose
();
}
// Dispose unmanaged resources
}
...
...
@@ -62,21 +62,21 @@ namespace DotNetCore.CAP
/// </summary>
public
void
Clear
()
{
locker
.
EnterWriteLock
();
_
locker
.
EnterWriteLock
();
try
{
try
{
foreach
(
Timer
t
in
timers
.
Values
)
foreach
(
Timer
t
in
_
timers
.
Values
)
t
.
Dispose
();
}
catch
{
}
timers
.
Clear
();
cache
.
Clear
();
_
timers
.
Clear
();
_
cache
.
Clear
();
}
finally
{
locker
.
ExitWriteLock
();
}
finally
{
_
locker
.
ExitWriteLock
();
}
}
#
endregion
...
...
@@ -86,22 +86,22 @@ namespace DotNetCore.CAP
{
Timer
timer
;
if
(
timers
.
TryGetValue
(
key
,
out
timer
))
if
(
_
timers
.
TryGetValue
(
key
,
out
timer
))
{
if
(
restartTimerIfExists
)
{
timer
.
Change
(
(
cacheTimeout
==
null
?
Timeout
.
InfiniteTimeSpan
:
cacheTimeout
.
Value
)
,
cacheTimeout
??
Timeout
.
InfiniteTimeSpan
,
Timeout
.
InfiniteTimeSpan
);
}
}
else
timers
.
Add
(
_
timers
.
Add
(
key
,
new
Timer
(
new
TimerCallback
(
RemoveByTimer
),
key
,
(
cacheTimeout
==
null
?
Timeout
.
InfiniteTimeSpan
:
cacheTimeout
.
Value
)
,
cacheTimeout
??
Timeout
.
InfiniteTimeSpan
,
Timeout
.
InfiniteTimeSpan
));
}
...
...
@@ -125,17 +125,17 @@ namespace DotNetCore.CAP
{
if
(
disposed
)
return
;
locker
.
EnterWriteLock
();
_
locker
.
EnterWriteLock
();
try
{
CheckTimer
(
key
,
cacheTimeout
,
restartTimerIfExists
);
if
(!
cache
.
ContainsKey
(
key
))
cache
.
Add
(
key
,
cacheObject
);
if
(!
_
cache
.
ContainsKey
(
key
))
_
cache
.
Add
(
key
,
cacheObject
);
else
cache
[
key
]
=
cacheObject
;
_
cache
[
key
]
=
cacheObject
;
}
finally
{
locker
.
ExitWriteLock
();
}
finally
{
_
locker
.
ExitWriteLock
();
}
}
/// <summary>
...
...
@@ -164,13 +164,13 @@ namespace DotNetCore.CAP
{
if
(
disposed
)
return
default
(
T
);
locker
.
EnterReadLock
();
_
locker
.
EnterReadLock
();
try
{
T
rv
;
return
(
cache
.
TryGetValue
(
key
,
out
rv
)
?
rv
:
default
(
T
));
return
(
_
cache
.
TryGetValue
(
key
,
out
rv
)
?
rv
:
default
(
T
));
}
finally
{
locker
.
ExitReadLock
();
}
finally
{
_
locker
.
ExitReadLock
();
}
}
/// <summary>
...
...
@@ -187,12 +187,12 @@ namespace DotNetCore.CAP
return
false
;
}
locker
.
EnterReadLock
();
_
locker
.
EnterReadLock
();
try
{
return
cache
.
TryGetValue
(
key
,
out
value
);
return
_
cache
.
TryGetValue
(
key
,
out
value
);
}
finally
{
locker
.
ExitReadLock
();
}
finally
{
_
locker
.
ExitReadLock
();
}
}
/// <summary>
...
...
@@ -203,22 +203,22 @@ namespace DotNetCore.CAP
{
if
(
disposed
)
return
;
locker
.
EnterWriteLock
();
_
locker
.
EnterWriteLock
();
try
{
var
removers
=
(
from
k
in
cache
.
Keys
.
Cast
<
K
>()
var
removers
=
(
from
k
in
_
cache
.
Keys
.
Cast
<
K
>()
where
keyPattern
(
k
)
select
k
).
ToList
();
foreach
(
K
workKey
in
removers
)
{
try
{
timers
[
workKey
].
Dispose
();
}
try
{
_
timers
[
workKey
].
Dispose
();
}
catch
{
}
timers
.
Remove
(
workKey
);
cache
.
Remove
(
workKey
);
_
timers
.
Remove
(
workKey
);
_
cache
.
Remove
(
workKey
);
}
}
finally
{
locker
.
ExitWriteLock
();
}
finally
{
_
locker
.
ExitWriteLock
();
}
}
/// <summary>
...
...
@@ -230,18 +230,18 @@ namespace DotNetCore.CAP
{
if
(
disposed
)
return
;
locker
.
EnterWriteLock
();
_
locker
.
EnterWriteLock
();
try
{
if
(
cache
.
ContainsKey
(
key
))
if
(
_
cache
.
ContainsKey
(
key
))
{
try
{
timers
[
key
].
Dispose
();
}
try
{
_
timers
[
key
].
Dispose
();
}
catch
{
}
timers
.
Remove
(
key
);
cache
.
Remove
(
key
);
_
timers
.
Remove
(
key
);
_
cache
.
Remove
(
key
);
}
}
finally
{
locker
.
ExitWriteLock
();
}
finally
{
_
locker
.
ExitWriteLock
();
}
}
/// <summary>
...
...
@@ -253,12 +253,12 @@ namespace DotNetCore.CAP
{
if
(
disposed
)
return
false
;
locker
.
EnterReadLock
();
_
locker
.
EnterReadLock
();
try
{
return
cache
.
ContainsKey
(
key
);
return
_
cache
.
ContainsKey
(
key
);
}
finally
{
locker
.
ExitReadLock
();
}
finally
{
_
locker
.
ExitReadLock
();
}
}
#
endregion
}
...
...
src/DotNetCore.CAP/Dashboard/CAP.DashboardMiddleware.cs
View file @
8d564cde
using
System
;
using
System.Linq
;
using
System.Net
;
using
System.Threading.Tasks
;
using
DotNetCore.CAP.Dashboard
;
using
Microsoft.AspNetCore.Http
;
// ReSharper disable once CheckNamespace
namespace
DotNetCore.CAP
{
public
class
DashboardMiddleware
...
...
@@ -23,10 +25,8 @@ namespace DotNetCore.CAP
public
Task
Invoke
(
HttpContext
context
)
{
PathString
matchedPath
;
PathString
remainingPath
;
if
(
context
.
Request
.
Path
.
StartsWithSegments
(
_options
.
PathMatch
,
out
matchedPath
,
out
remainingPath
))
if
(
context
.
Request
.
Path
.
StartsWithSegments
(
_options
.
PathMatch
,
out
var
matchedPath
,
out
var
remainingPath
))
{
// Update the path
var
path
=
context
.
Request
.
Path
;
...
...
@@ -44,18 +44,15 @@ namespace DotNetCore.CAP
return
_next
.
Invoke
(
context
);
}
foreach
(
var
filter
in
_options
.
Authorization
)
if
(
_options
.
Authorization
.
Any
(
filter
=>
!
filter
.
Authorize
(
dashboardContext
))
)
{
if
(!
filter
.
Authorize
(
dashboardContext
))
{
var
isAuthenticated
=
context
.
User
?.
Identity
?.
IsAuthenticated
;
var
isAuthenticated
=
context
.
User
?.
Identity
?.
IsAuthenticated
;
context
.
Response
.
StatusCode
=
isAuthenticated
==
true
?
(
int
)
HttpStatusCode
.
Forbidden
:
(
int
)
HttpStatusCode
.
Unauthorized
;
context
.
Response
.
StatusCode
=
isAuthenticated
==
true
?
(
int
)
HttpStatusCode
.
Forbidden
:
(
int
)
HttpStatusCode
.
Unauthorized
;
return
Task
.
CompletedTask
;
}
return
Task
.
CompletedTask
;
}
dashboardContext
.
UriMatch
=
findResult
.
Item2
;
...
...
src/DotNetCore.CAP/Dashboard/CAP.DashboardOptions.cs
View file @
8d564cde
using
System
;
using
System.Collections.Generic
;
using
System.Text
;
using
System.Collections.Generic
;
using
DotNetCore.CAP.Dashboard
;
// ReSharper disable once CheckNamespace
namespace
DotNetCore.CAP
{
public
class
DashboardOptions
...
...
src/DotNetCore.CAP/Dashboard/CAP.DashboardOptionsExtensions.cs
View file @
8d564cde
...
...
@@ -2,9 +2,9 @@
namespace
DotNetCore.CAP
{
using
D
otNetCore.CAP.D
ashboard
;
using
D
otNetCore.CAP.D
ashboard.GatewayProxy
;
using
D
otNetCore.CAP.D
ashboard.GatewayProxy.Requester
;
using
Dashboard
;
using
Dashboard.GatewayProxy
;
using
Dashboard.GatewayProxy.Requester
;
using
Microsoft.Extensions.DependencyInjection
;
internal
sealed
class
DashboardOptionsExtension
:
ICapOptionsExtension
...
...
@@ -25,8 +25,6 @@ namespace DotNetCore.CAP
services
.
AddSingleton
<
IHttpRequester
,
HttpClientHttpRequester
>();
services
.
AddSingleton
<
IHttpClientCache
,
MemoryHttpClientCache
>();
services
.
AddSingleton
<
IRequestMapper
,
RequestMapper
>();
//services.AddScoped<IRequestScopedDataRepository, ScopedDataRepository>();
//services.AddScoped<IRequestScopedDataRepository, HttpDataRepository>();
}
}
}
...
...
src/DotNetCore.CAP/Dashboard/Content/css/cap.css
View file @
8d564cde
...
...
@@ -310,6 +310,7 @@ a:hover .label-hover {
padding
:
12px
;
background-color
:
#fff
;
border
:
1px
solid
#e5e5e5
;
-ms-border-radius
:
3px
;
border-radius
:
3px
;
}
...
...
@@ -333,12 +334,14 @@ a:hover .label-hover {
.state-card-body
{
padding
:
10px
;
margin
:
10px
-12px
-12px
-12px
;
-ms-border-bottom-left-radius
:
3px
;
border-bottom-left-radius
:
3px
;
-ms-border-bottom-right-radius
:
3px
;
border-bottom-right-radius
:
3px
;
background-color
:
#f5f5f5
;
}
.state-card-body
dl
{
.state-card-body
dl
{
margin-top
:
5px
;
margin-bottom
:
0
;
}
...
...
@@ -353,7 +356,7 @@ a:hover .label-hover {
.state-card-body
.stack-trace
{
background-color
:
transparent
;
padding
:
0
20px
;
margin-bottom
:
0
px
;
margin-bottom
:
0
;
}
.state-card-body
.exception-type
{
...
...
@@ -453,6 +456,7 @@ span.metric-default {
div
.metric
{
border
:
solid
1px
transparent
;
-ms-border-radius
:
4px
;
border-radius
:
4px
;
-webkit-box-shadow
:
0
1px
1px
rgba
(
0
,
0
,
0
,
.05
);
box-shadow
:
0
1px
1px
rgba
(
0
,
0
,
0
,
.05
);
...
...
@@ -460,7 +464,7 @@ div.metric {
transition
:
color
.1s
ease-out
,
background
.1s
ease-out
,
border
.1s
ease-out
;
}
div
.metric
.metric-body
{
div
.metric
.metric-body
{
padding
:
15px
15px
0
;
font-size
:
26px
;
text-align
:
center
;
...
...
src/DotNetCore.CAP/Dashboard/Content/js/cap.js
View file @
8d564cde
...
...
@@ -398,10 +398,10 @@
updateRelativeDates
();
setInterval
(
updateRelativeDates
,
30
*
1000
);
$
(
'
*[title]
'
).
tooltip
();
$
(
"
*[title]
"
).
tooltip
();
var
self
=
this
;
$
(
'
*[data-metric]
'
).
each
(
function
()
{
$
(
"
*[data-metric]
"
).
each
(
function
()
{
var
name
=
$
(
this
).
data
(
'
metric
'
);
self
.
_metrics
.
addElement
(
name
,
this
);
});
...
...
src/DotNetCore.CAP/Dashboard/Content/resx/Strings.Designer.cs
View file @
8d564cde
...
...
@@ -268,11 +268,20 @@ namespace DotNetCore.CAP.Dashboard.Resources {
}
/// <summary>
/// Looks up a localized string similar to Re
queue jobs
.
/// Looks up a localized string similar to Re
Execution
.
/// </summary>
public
static
string
Common_Re
queueJobs
{
public
static
string
Common_Re
Consume
{
get
{
return
ResourceManager
.
GetString
(
"Common_RequeueJobs"
,
resourceCulture
);
return
ResourceManager
.
GetString
(
"Common_ReConsume"
,
resourceCulture
);
}
}
/// <summary>
/// Looks up a localized string similar to Requeue messages.
/// </summary>
public
static
string
Common_RequeueMessages
{
get
{
return
ResourceManager
.
GetString
(
"Common_RequeueMessages"
,
resourceCulture
);
}
}
...
...
@@ -546,6 +555,15 @@ namespace DotNetCore.CAP.Dashboard.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to State.
/// </summary>
public
static
string
MessagesPage_Table_State
{
get
{
return
ResourceManager
.
GetString
(
"MessagesPage_Table_State"
,
resourceCulture
);
}
}
/// <summary>
/// Looks up a localized string similar to Active Connections.
/// </summary>
...
...
src/DotNetCore.CAP/Dashboard/Content/resx/Strings.resx
View file @
8d564cde
...
...
@@ -162,8 +162,8 @@
<data
name=
"Common_Reason"
xml:space=
"preserve"
>
<value>
Reason
</value>
</data>
<data
name=
"Common_Requeue
Job
s"
xml:space=
"preserve"
>
<value>
Requeue
job
s
</value>
<data
name=
"Common_Requeue
Message
s"
xml:space=
"preserve"
>
<value>
Requeue
message
s
</value>
</data>
<data
name=
"Common_Retry"
xml:space=
"preserve"
>
<value>
Retry
</value>
...
...
@@ -384,4 +384,10 @@
<data
name=
"NodePage_Switch"
xml:space=
"preserve"
>
<value>
Switch
</value>
</data>
<data
name=
"Common_ReConsume"
xml:space=
"preserve"
>
<value>
ReExecution
</value>
</data>
<data
name=
"MessagesPage_Table_State"
xml:space=
"preserve"
>
<value>
State
</value>
</data>
</root>
\ No newline at end of file
src/DotNetCore.CAP/Dashboard/Content/resx/Strings.zh.resx
View file @
8d564cde
...
...
@@ -162,7 +162,7 @@
<data
name=
"Common_Reason"
xml:space=
"preserve"
>
<value>
原因
</value>
</data>
<data
name=
"Common_Requeue
Job
s"
xml:space=
"preserve"
>
<data
name=
"Common_Requeue
Message
s"
xml:space=
"preserve"
>
<value>
重新加入队列
</value>
</data>
<data
name=
"Common_Retry"
xml:space=
"preserve"
>
...
...
@@ -408,4 +408,10 @@
<data
name=
"NodePage_Switch"
xml:space=
"preserve"
>
<value>
切换到
</value>
</data>
<data
name=
"Common_ReConsume"
xml:space=
"preserve"
>
<value>
重新消费
</value>
</data>
<data
name=
"MessagesPage_Table_State"
xml:space=
"preserve"
>
<value>
状态
</value>
</data>
</root>
\ No newline at end of file
src/DotNetCore.CAP/Dashboard/DashboardResponse.cs
View file @
8d564cde
...
...
@@ -24,20 +24,19 @@ namespace DotNetCore.CAP.Dashboard
public
CapDashboardResponse
(
HttpContext
context
)
{
if
(
context
==
null
)
throw
new
ArgumentNullException
(
nameof
(
context
));
_context
=
context
;
_context
=
context
??
throw
new
ArgumentNullException
(
nameof
(
context
));
}
public
override
string
ContentType
{
get
{
return
_context
.
Response
.
ContentType
;
}
set
{
_context
.
Response
.
ContentType
=
value
;
}
get
=>
_context
.
Response
.
ContentType
;
set
=>
_context
.
Response
.
ContentType
=
value
;
}
public
override
int
StatusCode
{
get
{
return
_context
.
Response
.
StatusCode
;
}
set
{
_context
.
Response
.
StatusCode
=
value
;
}
get
=>
_context
.
Response
.
StatusCode
;
set
=>
_context
.
Response
.
StatusCode
=
value
;
}
public
override
Stream
Body
=>
_context
.
Response
.
Body
;
...
...
src/DotNetCore.CAP/Dashboard/DashboardRoutes.cs
View file @
8d564cde
...
...
@@ -125,11 +125,6 @@ namespace DotNetCore.CAP.Dashboard
return
$"
{
GetContentFolderNamespace
(
contentFolder
)}
.
{
resourceName
}
"
;
}
private
static
EnqueuedState
CreateEnqueuedState
()
{
return
new
EnqueuedState
();
}
private
static
Assembly
GetExecutingAssembly
()
{
return
typeof
(
DashboardRoutes
).
GetTypeInfo
().
Assembly
;
...
...
src/DotNetCore.CAP/Dashboard/EmbeddedResourceDispatcher.cs
View file @
8d564cde
...
...
@@ -15,12 +15,16 @@ namespace DotNetCore.CAP.Dashboard
Assembly
assembly
,
string
resourceName
)
{
if
(
contentType
==
null
)
throw
new
ArgumentNullException
(
nameof
(
contentType
));
if
(
assembly
==
null
)
throw
new
ArgumentNullException
(
nameof
(
assembly
));
_assembly
=
assembly
;
_resourceName
=
resourceName
;
_contentType
=
contentType
;
if
(
assembly
!=
null
)
{
_assembly
=
assembly
;
_resourceName
=
resourceName
;
_contentType
=
contentType
??
throw
new
ArgumentNullException
(
nameof
(
contentType
));
}
else
{
throw
new
ArgumentNullException
(
nameof
(
assembly
));
}
}
public
Task
Dispatch
(
DashboardContext
context
)
...
...
src/DotNetCore.CAP/Dashboard/GatewayProxy/DownstreamUrl.cs
View file @
8d564cde
...
...
@@ -7,6 +7,6 @@
Value
=
value
;
}
public
string
Value
{
get
;
private
set
;
}
public
string
Value
{
get
;
}
}
}
\ No newline at end of file
src/DotNetCore.CAP/Dashboard/GatewayProxy/GatewayProxyMiddleware.cs
View file @
8d564cde
...
...
@@ -15,7 +15,7 @@ namespace DotNetCore.CAP.Dashboard.GatewayProxy
{
public
class
GatewayProxyMiddleware
{
p
rivate
const
string
NODE_COOKIE_NAME
=
"cap.node"
;
p
ublic
const
string
NodeCookieName
=
"cap.node"
;
private
readonly
RequestDelegate
_next
;
private
readonly
ILogger
_logger
;
...
...
@@ -45,12 +45,9 @@ namespace DotNetCore.CAP.Dashboard.GatewayProxy
var
request
=
context
.
Request
;
var
pathMatch
=
discoveryOptions
.
MatchPath
;
var
isCapRequest
=
request
.
Path
.
StartsWithSegments
(
new
PathString
(
pathMatch
),
out
PathString
matchedPath
,
out
PathString
remainingPath
);
var
isCapRequest
=
request
.
Path
.
StartsWithSegments
(
new
PathString
(
pathMatch
));
var
isSwitchNode
=
request
.
Cookies
.
TryGetValue
(
N
ODE_COOKIE_NAME
,
out
string
requestNodeId
);
var
isSwitchNode
=
request
.
Cookies
.
TryGetValue
(
N
odeCookieName
,
out
string
requestNodeId
);
var
isCurrentNode
=
discoveryOptions
.
NodeId
.
ToString
()
==
requestNodeId
;
if
(!
isCapRequest
||
!
isSwitchNode
||
isCurrentNode
)
...
...
@@ -80,7 +77,7 @@ namespace DotNetCore.CAP.Dashboard.GatewayProxy
}
else
{
context
.
Response
.
Cookies
.
Delete
(
N
ODE_COOKIE_NAME
);
context
.
Response
.
Cookies
.
Delete
(
N
odeCookieName
);
await
_next
.
Invoke
(
context
);
}
}
...
...
src/DotNetCore.CAP/Dashboard/GatewayProxy/Requester/HttpClientHttpRequester.cs
View file @
8d564cde
...
...
@@ -31,7 +31,7 @@ namespace DotNetCore.CAP.Dashboard.GatewayProxy.Requester
catch
(
Exception
exception
)
{
_logger
.
LogError
(
"Error making http request, exception:"
+
exception
.
Message
);
throw
exception
;
throw
;
}
finally
{
...
...
src/DotNetCore.CAP/Dashboard/GatewayProxy/Requester/IHttpClientBuilder.cs
View file @
8d564cde
namespace
DotNetCore.CAP.Dashboard.GatewayProxy.Requester
using
System.Net.Http
;
namespace
DotNetCore.CAP.Dashboard.GatewayProxy.Requester
{
public
interface
IHttpClientBuilder
{
...
...
src/DotNetCore.CAP/Dashboard/GatewayProxy/Requester/MemoryHttpClientCache.cs
View file @
8d564cde
...
...
@@ -9,8 +9,7 @@ namespace DotNetCore.CAP.Dashboard.GatewayProxy.Requester
public
void
Set
(
string
id
,
IHttpClient
client
,
TimeSpan
expirationTime
)
{
ConcurrentQueue
<
IHttpClient
>
connectionQueue
;
if
(
_httpClientsCache
.
TryGetValue
(
id
,
out
connectionQueue
))
if
(
_httpClientsCache
.
TryGetValue
(
id
,
out
var
connectionQueue
))
{
connectionQueue
.
Enqueue
(
client
);
}
...
...
@@ -24,15 +23,13 @@ namespace DotNetCore.CAP.Dashboard.GatewayProxy.Requester
public
bool
Exists
(
string
id
)
{
ConcurrentQueue
<
IHttpClient
>
connectionQueue
;
return
_httpClientsCache
.
TryGetValue
(
id
,
out
connectionQueue
);
return
_httpClientsCache
.
TryGetValue
(
id
,
out
_
);
}
public
IHttpClient
Get
(
string
id
)
{
IHttpClient
client
=
null
;
ConcurrentQueue
<
IHttpClient
>
connectionQueue
;
if
(
_httpClientsCache
.
TryGetValue
(
id
,
out
connectionQueue
))
if
(
_httpClientsCache
.
TryGetValue
(
id
,
out
var
connectionQueue
))
{
connectionQueue
.
TryDequeue
(
out
client
);
}
...
...
@@ -41,8 +38,7 @@ namespace DotNetCore.CAP.Dashboard.GatewayProxy.Requester
public
void
Remove
(
string
id
)
{
ConcurrentQueue
<
IHttpClient
>
connectionQueue
;
_httpClientsCache
.
TryRemove
(
id
,
out
connectionQueue
);
_httpClientsCache
.
TryRemove
(
id
,
out
_
);
}
}
}
\ No newline at end of file
src/DotNetCore.CAP/Dashboard/HtmlHelper.cs
View file @
8d564cde
...
...
@@ -19,8 +19,7 @@ namespace DotNetCore.CAP.Dashboard
public
HtmlHelper
(
RazorPage
page
)
{
if
(
page
==
null
)
throw
new
ArgumentNullException
(
nameof
(
page
));
_page
=
page
;
_page
=
page
??
throw
new
ArgumentNullException
(
nameof
(
page
));
}
public
NonEscapedString
Breadcrumbs
(
string
title
,
IDictionary
<
string
,
string
>
items
)
...
...
@@ -35,10 +34,7 @@ namespace DotNetCore.CAP.Dashboard
{
return
SidebarMenu
(
MessagesSidebarMenu
.
PublishedItems
);
}
else
{
return
SidebarMenu
(
MessagesSidebarMenu
.
ReceivedItems
);
}
return
SidebarMenu
(
MessagesSidebarMenu
.
ReceivedItems
);
}
public
NonEscapedString
SidebarMenu
(
IEnumerable
<
Func
<
RazorPage
,
MenuItem
>>
items
)
...
...
@@ -198,11 +194,9 @@ namespace DotNetCore.CAP.Dashboard
#
region
MethodEscaped
public
NonEscapedString
MethodEscaped
(
MethodInfo
method
)
{
var
outputString
=
string
.
Empty
;
var
@public
=
WrapKeyword
(
"public"
);
var
@async
=
string
.
Empty
;
var
@return
=
string
.
Empty
;
string
@return
;
var
isAwaitable
=
CoercedAwaitableInfo
.
IsTypeAwaitable
(
method
.
ReturnType
,
out
var
coercedAwaitableInfo
);
if
(
isAwaitable
)
...
...
@@ -221,7 +215,6 @@ namespace DotNetCore.CAP.Dashboard
string
paramType
=
null
;
string
paramName
=
null
;
string
paramString
=
string
.
Empty
;
var
@params
=
method
.
GetParameters
();
if
(
@params
.
Length
==
1
)
...
...
@@ -232,16 +225,9 @@ namespace DotNetCore.CAP.Dashboard
paramName
=
firstParam
.
Name
;
}
if
(
paramType
==
null
)
{
paramString
=
"();"
;
}
else
{
paramString
=
$"(
{
paramType
}
{
paramName
}
);"
;
}
var
paramString
=
paramType
==
null
?
"();"
:
$"(
{
paramType
}
{
paramName
}
);"
;
outputString
=
@public
+
" "
+
(
string
.
IsNullOrEmpty
(
@async
)
?
""
:
@async
+
" "
)
+
@return
+
" "
+
@name
+
paramString
;
var
outputString
=
@public
+
" "
+
(
string
.
IsNullOrEmpty
(
@async
)
?
""
:
@async
+
" "
)
+
@return
+
" "
+
@name
+
paramString
;
return
new
NonEscapedString
(
outputString
);
}
...
...
@@ -261,7 +247,7 @@ namespace DotNetCore.CAP.Dashboard
{
return
WrapType
(
type
.
Name
);
}
if
(
type
.
IsPrimitive
||
type
.
Equals
(
typeof
(
string
))
||
type
.
Equals
(
typeof
(
decimal
)
))
if
(
type
.
IsPrimitive
||
type
==
typeof
(
string
)
||
type
==
typeof
(
decimal
))
{
return
WrapKeyword
(
type
.
Name
.
ToLower
());
}
...
...
@@ -286,11 +272,6 @@ namespace DotNetCore.CAP.Dashboard
return
Span
(
"type"
,
value
);
}
private
string
WrapString
(
string
value
)
{
return
Span
(
"string"
,
value
);
}
private
string
Span
(
string
@class
,
string
value
)
{
return
$"<span class=\"
{
@class
}
\">
{
value
}
</span>"
;
...
...
src/DotNetCore.CAP/Dashboard/JobHistoryRenderer.cs
View file @
8d564cde
using
System
;
using
System.Collections.Generic
;
using
System.Text
;
using
DotNetCore.CAP.Infrastructure
;
using
DotNetCore.CAP.Processor.States
;
using
Newtonsoft.Json
;
namespace
DotNetCore.CAP.Dashboard
{
...
...
src/DotNetCore.CAP/Dashboard/JsonDispatcher.cs
View file @
8d564cde
...
...
@@ -23,9 +23,6 @@ namespace DotNetCore.CAP.Dashboard
public
async
Task
Dispatch
(
DashboardContext
context
)
{
var
request
=
context
.
Request
;
var
response
=
context
.
Response
;
string
serialized
=
null
;
if
(
_command
!=
null
)
{
...
...
src/DotNetCore.CAP/Dashboard/Pages/BlockMetric.cs
View file @
8d564cde
namespace
DotNetCore.CAP.Dashboard.Pages
{
partial
class
BlockMetric
internal
partial
class
BlockMetric
{
public
BlockMetric
(
DashboardMetric
dashboardMetric
)
{
...
...
src/DotNetCore.CAP/Dashboard/Pages/Breadcrumbs.cs
View file @
8d564cde
...
...
@@ -2,7 +2,7 @@
namespace
DotNetCore.CAP.Dashboard.Pages
{
partial
class
Breadcrumbs
internal
partial
class
Breadcrumbs
{
public
Breadcrumbs
(
string
title
,
IDictionary
<
string
,
string
>
items
)
{
...
...
src/DotNetCore.CAP/Dashboard/Pages/NodePage.cs
View file @
8d564cde
using
System
;
using
System.Collections.Generic
;
using
System.Collections.Generic
;
using
DotNetCore.CAP.NodeDiscovery
;
using
Microsoft.Extensions.DependencyInjection
;
namespace
DotNetCore.CAP.Dashboard.Pages
{
partial
class
NodePage
internal
partial
class
NodePage
{
private
IList
<
Node
>
_nodes
=
null
;
private
IList
<
Node
>
_nodes
;
private
INodeDiscoveryProvider
_discoveryProvider
;
public
NodePage
()
...
...
src/DotNetCore.CAP/Dashboard/Pages/PublishedPage.cs
View file @
8d564cde
...
...
@@ -14,18 +14,15 @@ namespace DotNetCore.CAP.Dashboard.Pages
public
int
GetTotal
(
IMonitoringApi
api
)
{
if
(
String
.
Compare
(
StatusName
,
SucceededState
.
StateName
,
true
)
==
0
)
if
(
string
.
Equals
(
StatusName
,
SucceededState
.
StateName
,
StringComparison
.
CurrentCultureIgnoreCase
)
)
{
return
api
.
PublishedSucceededCount
();
}
else
if
(
String
.
Compare
(
StatusName
,
ProcessingState
.
StateName
,
true
)
==
0
)
if
(
string
.
Equals
(
StatusName
,
ProcessingState
.
StateName
,
StringComparison
.
CurrentCultureIgnoreCase
)
)
{
return
api
.
PublishedProcessingCount
();
}
else
{
return
api
.
PublishedFailedCount
();
}
return
api
.
PublishedFailedCount
();
}
}
}
\ No newline at end of file
src/DotNetCore.CAP/Dashboard/Pages/PublishedPage.cshtml
View file @
8d564cde
...
...
@@ -32,7 +32,7 @@
<div class="row">
<div class="col-md-3">
@Html.
Job
sSidebar(MessageType.Publish)
@Html.
Message
sSidebar(MessageType.Publish)
</div>
<div class="col-md-9">
<h1 class="page-header">@Strings.PublishedPage_Title</h1>
...
...
@@ -67,7 +67,7 @@
data-loading-text="@Strings.Common_Enqueueing"
disabled="disabled">
<span class="glyphicon glyphicon-repeat"></span>
@Strings.Common_Requeue
Job
s
@Strings.Common_Requeue
Message
s
</button>
@Html.PerPageSelector(pager)
...
...
@@ -83,6 +83,10 @@
<th>@Strings.MessagesPage_Table_Code</th>
<th>@Strings.MessagesPage_Table_Name</th>
<th class="min-width">@Strings.MessagesPage_Table_Retries</th>
@if (string.Equals(StatusName, "Processing", StringComparison.CurrentCultureIgnoreCase))
{
<th>@Strings.MessagesPage_Table_State</th>
}
<th class="align-right">@Strings.MessagesPage_Table_ExpiresAt</th>
</tr>
</thead>
...
...
@@ -102,6 +106,12 @@
<td>
@message.Retries
</td>
@if (string.Equals(StatusName, "Processing", StringComparison.CurrentCultureIgnoreCase))
{
<td>
@message.StatusName
</td>
}
<td class="align-right">
@if (message.ExpiresAt.HasValue)
{
...
...
src/DotNetCore.CAP/Dashboard/Pages/PublishedPage1.generated.cs
View file @
8d564cde
...
...
@@ -11,46 +11,46 @@
namespace
DotNetCore.CAP.Dashboard.Pages
{
#
line
2
"..\..\Dashboard\Pages
\PublishedPage.cshtml"
#line 2 "..\..
\PublishedPage.cshtml"
using
System
;
#
line
default
#
line
hidden
#line default
#line hidden
using
System.Collections.Generic
;
using
System.Linq
;
using
System.Text
;
#
line
4
"..\..\Dashboard\Pages
\PublishedPage.cshtml"
#line 4 "..\..
\PublishedPage.cshtml"
using
DotNetCore.CAP.Dashboard
;
#
line
default
#
line
hidden
#
line
6
"..\..\Dashboard\Pages
\PublishedPage.cshtml"
#line default
#line hidden
#line 6 "..\..
\PublishedPage.cshtml"
using
DotNetCore.CAP.Dashboard.Monitoring
;
#
line
default
#
line
hidden
#
line
5
"..\..\Dashboard\Pages
\PublishedPage.cshtml"
#line default
#line hidden
#line 5 "..\..
\PublishedPage.cshtml"
using
DotNetCore.CAP.Dashboard.Pages
;
#
line
default
#
line
hidden
#
line
7
"..\..\Dashboard\Pages
\PublishedPage.cshtml"
#line default
#line hidden
#line 7 "..\..
\PublishedPage.cshtml"
using
DotNetCore.CAP.Dashboard.Resources
;
#
line
default
#
line
hidden
#
line
3
"..\..\Dashboard\Pages
\PublishedPage.cshtml"
#line default
#line hidden
#line 3 "..\..
\PublishedPage.cshtml"
using
DotNetCore.CAP.Models
;
#
line
default
#
line
hidden
#line default
#line hidden
[
System
.
CodeDom
.
Compiler
.
GeneratedCodeAttribute
(
"RazorGenerator"
,
"2.0.0.0"
)]
internal
partial
class
PublishedPage
:
RazorPage
{
...
...
@@ -60,7 +60,7 @@ namespace DotNetCore.CAP.Dashboard.Pages
{
WriteLiteral
(
"\r\n"
);
WriteLiteral
(
"\r\n"
);
...
...
@@ -70,438 +70,496 @@ WriteLiteral("\r\n");
#
line
9
"..\..\Dashboard\Pages\PublishedPage.cshtml"
Layout
=
new
LayoutPage
(
Strings
.
PublishedMessagesPage_Title
);
int
from
,
perPage
;
#line 9 "..\..\PublishedPage.cshtml"
int
.
TryParse
(
Query
(
"from"
),
out
from
);
int
.
TryParse
(
Query
(
"count"
),
out
perPage
);
string
name
=
Query
(
"name"
);
string
content
=
Query
(
"content"
);
Layout
=
new
LayoutPage
(
Strings
.
PublishedMessagesPage_Title
);
var
monitor
=
Storage
.
GetMonitoringApi
();
var
pager
=
new
Pager
(
from
,
perPage
,
GetTotal
(
monitor
));
var
queryDto
=
new
MessageQueryDto
{
MessageType
=
MessageType
.
Publish
,
Name
=
name
,
Content
=
content
,
StatusName
=
StatusName
,
CurrentPage
=
pager
.
CurrentPage
-
1
,
PageSize
=
pager
.
RecordsPerPage
};
var
succeededMessages
=
monitor
.
Messages
(
queryDto
);
int
from
,
perPage
;
int
.
TryParse
(
Query
(
"from"
),
out
from
);
int
.
TryParse
(
Query
(
"count"
),
out
perPage
);
string
name
=
Query
(
"name"
);
string
content
=
Query
(
"content"
);
#
line
default
#
line
hidden
WriteLiteral
(
"\r\n<div class=\"row\">\r\n <div class=\"col-md-3\">\r\n "
);
var
monitor
=
Storage
.
GetMonitoringApi
();
var
pager
=
new
Pager
(
from
,
perPage
,
GetTotal
(
monitor
));
var
queryDto
=
new
MessageQueryDto
{
MessageType
=
MessageType
.
Publish
,
Name
=
name
,
Content
=
content
,
StatusName
=
StatusName
,
CurrentPage
=
pager
.
CurrentPage
-
1
,
PageSize
=
pager
.
RecordsPerPage
};
var
succeededMessages
=
monitor
.
Messages
(
queryDto
);
#
line
35
"..\..\Dashboard\Pages\PublishedPage.cshtml"
Write
(
Html
.
MessagesSidebar
(
MessageType
.
Publish
));
#
line
default
#
line
hidden
WriteLiteral
(
"\r\n </div>\r\n <div class=\"col-md-9\">\r\n <h1 class=\"page-header\">"
);
#line default
#line hidden
WriteLiteral
(
"\r\n<div class=\"row\">\r\n <div class=\"col-md-3\">\r\n "
);
#
line
38
"..\..\Dashboard\Pages\PublishedPage.cshtml"
Write
(
Strings
.
PublishedPage_Title
);
#
line
default
#
line
hidden
WriteLiteral
(
"</h1>\r\n\r\n"
);
#line 35 "..\..\PublishedPage.cshtml"
Write
(
Html
.
MessagesSidebar
(
MessageType
.
Publish
));
#
line
40
"..\..\Dashboard\Pages\PublishedPage.cshtml"
if
(
succeededMessages
.
Count
==
0
)
{
#line default
#line hidden
WriteLiteral
(
"\r\n </div>\r\n <div class=\"col-md-9\">\r\n <h1 class=\"page-header\">"
);
#
line
default
#
line
hidden
WriteLiteral
(
" <div class=\"alert alert-info\">\r\n "
);
#
line
43
"..\..\Dashboard\Pages\PublishedPage.cshtml"
Write
(
Strings
.
MessagesPage_NoMessages
);
#line 38 "..\..\PublishedPage.cshtml"
Write
(
Strings
.
PublishedPage_Title
);
#
line
default
#
line
hidden
WriteLiteral
(
"\r\n </div>\r\n"
);
#line default
#line hidden
WriteLiteral
(
"</h1>\r\n\r\n"
);
#
line
45
"..\..\Dashboard\Pages\PublishedPage.cshtml"
}
else
{
#
line
default
#
line
hidden
WriteLiteral
(
@" <div class=""js-jobs-list"">
<div class=""btn-toolbar btn-toolbar-top"">
<form class=""row"">
<span class=""col-md-3"">
<input type=""text"" class=""form-control"" name=""name"" value="""
);
#line 40 "..\..\PublishedPage.cshtml"
if
(
succeededMessages
.
Count
==
0
)
{
#
line
52
"..\..\Dashboard\Pages\PublishedPage.cshtml"
Write
(
Query
(
"name"
));
#
line
default
#
line
hidden
WriteLiteral
(
"\" placeholder=\""
);
#line default
#line hidden
WriteLiteral
(
" <div class=\"alert alert-info\">\r\n "
);
#
line
52
"..\..\Dashboard\Pages\PublishedPage.cshtml"
Write
(
Strings
.
MessagesPage_Query_MessageName
);
#line 43 "..\..\PublishedPage.cshtml"
Write
(
Strings
.
MessagesPage_NoMessages
);
#
line
default
#
line
hidden
WriteLiteral
(
"\" />\r\n </span>\r\n <div class=\"col-md"
+
"-5\">\r\n <div class=\"input-group\">\r\n "
+
" <input type=\"text\" class=\"form-control\" name=\"content\" value=\""
);
#line default
#line hidden
WriteLiteral
(
"\r\n </div>\r\n"
);
#
line
56
"..\..\Dashboard\Pages\PublishedPage.cshtml"
Write
(
Query
(
"content"
));
#
line
default
#
line
hidden
WriteLiteral
(
"\" placeholder=\""
);
#line 45 "..\..\PublishedPage.cshtml"
}
else
{
#
line
56
"..\..\Dashboard\Pages\PublishedPage.cshtml"
Write
(
Strings
.
MessagesPage_Query_MessageBody
);
#
line
default
#
line
hidden
WriteLiteral
(
"\" />\r\n <span class=\"input-group-btn\">\r\n "
+
" <button class=\"btn btn-info\">"
);
#line default
#line hidden
WriteLiteral
(
" <div class=\"js-jobs-list\">\r\n <div class=\"btn-toolbar btn-toolb"
+
"ar-top\">\r\n <form class=\"row\">\r\n <span class=\"c"
+
"ol-md-3\">\r\n <input type=\"text\" class=\"form-control\" name="
+
"\"name\" value=\""
);
#
line
58
"..\..\Dashboard\Pages\PublishedPage.cshtml"
Write
(
Strings
.
MessagesPage_Query_Button
);
#
line
default
#
line
hidden
WriteLiteral
(
@"</button>
</span>
</div>
#line 52 "..\..\PublishedPage.cshtml"
Write
(
Query
(
" name"
));
#line default
#line hidden
WriteLiteral
(
"\" placeholder=\""
);
#line 52 "..\..\PublishedPage.cshtml"
Write
(
Strings
.
MessagesPage_Query_MessageName
);
#line default
#line hidden
WriteLiteral
(
"\" />\r\n </span>\r\n <div class=\"col-md-5\">\r\n "
+
" <div class=\"input-group\">\r\n <in"
+
"put type=\"text\" class=\"form-control\" name=\"content\" value=\""
);
#line 56 "..\..\PublishedPage.cshtml"
Write
(
Query
(
" content"
));
#line default
#line hidden
WriteLiteral
(
"\" placeholder=\""
);
#line 56 "..\..\PublishedPage.cshtml"
Write
(
Strings
.
MessagesPage_Query_MessageBody
);
#line default
#line hidden
WriteLiteral
(
"\" />\r\n <span class=\"input-group-btn\">\r\n "
+
" <button class=\"btn btn-info\">"
);
#line 58 "..\..\PublishedPage.cshtml"
Write
(
Strings
.
MessagesPage_Query_Button
);
#line default
#line hidden
WriteLiteral
(
@"</button>
</span>
</div>
</form>
</div>
<div class=""btn-toolbar btn-toolbar-top"">
<button class=""js-jobs-list-command btn btn-sm btn-primary""
data-url="""
);
</div>
</form>
</div>
<div class=""btn-toolbar btn-toolbar-top"">
<button class=""js-jobs-list-command btn btn-sm btn-primary""
data-url="""
);
#
line
66
"..\..\Dashboard\Pages\PublishedPage.cshtml"
Write
(
Url
.
To
(
"/published/requeue"
));
#
line
default
#
line
hidden
WriteLiteral
(
"\"\r\n data-loading-text=\""
);
#line 66 "..\..\PublishedPage.cshtml"
Write
(
Url
.
To
(
"/published/requeue"
));
#
line
67
"..\..\Dashboard\Pages\PublishedPage.cshtml"
Write
(
Strings
.
Common_Enqueueing
);
#line default
#line hidden
WriteLiteral
(
"\"\r\n data-loading-text=\""
);
#
line
default
#
line
hidden
WriteLiteral
(
"\"\r\n disabled=\"disabled\">\r\n <spa"
+
"n class=\"glyphicon glyphicon-repeat\"></span>\r\n "
);
#
line
70
"..\..\Dashboard\Pages\PublishedPage.cshtml"
Write
(
Strings
.
Common_RequeueJobs
);
#line 67 "..\..\PublishedPage.cshtml"
Write
(
Strings
.
Common_Enqueueing
);
#
line
default
#
line
hidden
WriteLiteral
(
"\r\n </button>\r\n\r\n "
);
#line default
#line hidden
WriteLiteral
(
"\"\r\n disabled=\"disabled\">\r\n <span class=\"glyphicon g"
+
"lyphicon-repeat\"></span>\r\n "
);
#
line
73
"..\..\Dashboard\Pages\PublishedPage.cshtml"
Write
(
Html
.
PerPageSelector
(
pager
));
#
line
default
#
line
hidden
WriteLiteral
(
@"
</div>
<div class=""table-responsive"">
<table class=""table"">
<thead>
<tr>
<th style=""width:60px;"">
<input type=""checkbox"" class=""js-jobs-list-select-all"" />
</th>
<th>"
);
#line 70 "..\..\PublishedPage.cshtml"
Write
(
Strings
.
Common_RequeueMessages
);
#
line
83
"..\..\Dashboard\Pages\PublishedPage.cshtml"
Write
(
Strings
.
MessagesPage_Table_Code
);
#line default
#line hidden
WriteLiteral
(
"\r\n </button>\r\n\r\n "
);
#
line
default
#
line
hidden
WriteLiteral
(
"</th>\r\n <th>"
);
#
line
84
"..\..\Dashboard\Pages\PublishedPage.cshtml"
Write
(
Strings
.
MessagesPage_Table_Name
);
#line 73 "..\..\PublishedPage.cshtml"
Write
(
Html
.
PerPageSelector
(
pager
));
#
line
default
#
line
hidden
WriteLiteral
(
"</th>\r\n <th class=\"min-width\">"
);
#line default
#line hidden
WriteLiteral
(
@"
</div>
#
line
85
"..\..\Dashboard\Pages\PublishedPage.cshtml"
Write
(
Strings
.
MessagesPage_Table_Retries
);
<div class=""table-responsive"">
<table class=""table"">
<thead>
<tr>
<th style=""width:60px;"">
<input type=""checkbox"" class=""js-jobs-list-select-all"" />
</th>
<th>"
);
#
line
default
#
line
hidden
WriteLiteral
(
"</th>\r\n <th class=\"align-right\">"
);
#
line
86
"..\..\Dashboard\Pages\PublishedPage.cshtml"
Write
(
Strings
.
MessagesPage_Table_ExpiresAt
);
#
line
default
#
line
hidden
WriteLiteral
(
"</th>\r\n </tr>\r\n </thead>\r\n "
+
" <tbody>\r\n"
);
#line 83 "..\..\PublishedPage.cshtml"
Write
(
Strings
.
MessagesPage_Table_Code
);
#
line
90
"..\..\Dashboard\Pages\PublishedPage.cshtml"
foreach
(
var
message
in
succeededMessages
)
{
#line default
#line hidden
WriteLiteral
(
"</th>\r\n <th>"
);
#
line
default
#
line
hidden
WriteLiteral
(
" <tr class=\"js-jobs-list-row hover\">\r\n "
+
" <td>\r\n <input typ"
+
"e=\"checkbox\" class=\"js-jobs-list-checkbox\" name=\"messages[]\" value=\""
);
#
line
94
"..\..\Dashboard\Pages\PublishedPage.cshtml"
Write
(
message
.
Id
);
#line 84 "..\..\PublishedPage.cshtml"
Write
(
Strings
.
MessagesPage_Table_Name
);
#
line
default
#
line
hidden
WriteLiteral
(
"\" />\r\n </td>\r\n "
+
" <td class=\"word-break\">\r\n <a href=\"ja"
+
"vascript:;\" data-url=\'"
);
#line default
#line hidden
WriteLiteral
(
"</th>\r\n <th class=\"min-width\">"
);
#
line
97
"..\..\Dashboard\Pages\PublishedPage.cshtml"
Write
(
Url
.
To
(
"/published/message/"
)+
message
.
Id
);
#
line
default
#
line
hidden
WriteLiteral
(
"\' class=\"openModal\">#"
);
#
line
97
"..\..\Dashboard\Pages\PublishedPage.cshtml"
Write
(
message
.
Id
);
#
line
default
#
line
hidden
WriteLiteral
(
"</a>\r\n </td>\r\n "
+
" <td>\r\n "
);
#
line
100
"..\..\Dashboard\Pages\PublishedPage.cshtml"
Write
(
message
.
Name
);
#
line
default
#
line
hidden
WriteLiteral
(
"\r\n </td>\r\n "
+
"<td>\r\n "
);
#line 85 "..\..\PublishedPage.cshtml"
Write
(
Strings
.
MessagesPage_Table_Retries
);
#
line
103
"..\..\Dashboard\Pages\PublishedPage.cshtml"
Write
(
message
.
Retries
);
#
line
default
#
line
hidden
WriteLiteral
(
"\r\n </td>\r\n "
+
"<td class=\"align-right\">\r\n"
);
#line default
#line hidden
WriteLiteral
(
"</th>\r\n"
);
#
line
106
"..\..\Dashboard\Pages\PublishedPage.cshtml"
if
(
message
.
ExpiresAt
.
HasValue
)
{
#
line
default
#
line
hidden
#
line
108
"..\..\Dashboard\Pages\PublishedPage.cshtml"
Write
(
Html
.
RelativeTime
(
message
.
ExpiresAt
.
Value
));
#
line
default
#
line
hidden
#
line
108
"..\..\Dashboard\Pages\PublishedPage.cshtml"
}
#
line
default
#
line
hidden
WriteLiteral
(
" </td>\r\n\r\n </tr"
+
">\r\n"
);
#
line
113
"..\..\Dashboard\Pages\PublishedPage.cshtml"
}
#line 86 "..\..\PublishedPage.cshtml"
if
(
string
.
Equals
(
StatusName
,
"Processing"
,
StringComparison
.
CurrentCultureIgnoreCase
))
{
#
line
default
#
line
hidden
WriteLiteral
(
" </tbody>\r\n </table>\r\n <"
+
"/div>\r\n "
);
#
line
117
"..\..\Dashboard\Pages\PublishedPage.cshtml"
Write
(
Html
.
Paginator
(
pager
));
#
line
default
#
line
hidden
WriteLiteral
(
"\r\n </div>\r\n"
);
#
line
119
"..\..\Dashboard\Pages\PublishedPage.cshtml"
#
line
default
#
line
hidden
WriteLiteral
(
@" <div>
<div class=""modal fade"" tabindex=""-1"" role=""dialog"">
<div class=""modal-dialog"" role=""document"">
<div class=""modal-content"">
<div class=""modal-header"">
<button type=""button"" class=""close"" data-dismiss=""modal"" aria-label=""Close""><span aria-hidden=""true"">×</span></button>
<h4 class=""modal-title"">Message Content</h4>
</div>
<div id=""jsonContent"" style=""max-height:500px;overflow-y:auto;"" class=""modal-body"">
</div>
<div class=""modal-footer"">
<button type=""button"" class=""btn btn-sm btn-primary"" id=""formatBtn"" onclick="""">"
);
#
line
131
"..\..\Dashboard\Pages\PublishedPage.cshtml"
Write
(
Strings
.
MessagesPage_Modal_Format
);
#
line
default
#
line
hidden
WriteLiteral
(
"</button>\r\n <button type=\"button\" class=\"btn btn-s"
+
"m btn-primary\" id=\"rawBtn\" onclick=\"\">"
);
#
line
132
"..\..\Dashboard\Pages\PublishedPage.cshtml"
Write
(
Strings
.
MessagesPage_Modal_Raw
);
#
line
default
#
line
hidden
WriteLiteral
(
"</button>\r\n <button type=\"button\" class=\"btn btn-s"
+
"m btn-primary\" id=\"expandBtn\" onclick=\"\">"
);
#
line
133
"..\..\Dashboard\Pages\PublishedPage.cshtml"
Write
(
Strings
.
MessagesPage_Modal_Expand
);
#
line
default
#
line
hidden
WriteLiteral
(
"</button>\r\n <button type=\"button\" class=\"btn btn-s"
+
"m btn-primary\" id=\"collapseBtn\" onclick=\"\">"
);
#
line
134
"..\..\Dashboard\Pages\PublishedPage.cshtml"
Write
(
Strings
.
MessagesPage_Model_Collaspse
);
#
line
default
#
line
hidden
WriteLiteral
(
"</button>\r\n </div>\r\n </div><!--"
+
" /.modal-content -->\r\n </div><!-- /.modal-dialog -->\r\n "
+
" </div><!-- /.modal -->\r\n </div>\r\n"
);
#line default
#line hidden
WriteLiteral
(
" <th>"
);
#
line
140
"..\..\Dashboard\Pages\PublishedPage.cshtml"
}
#
line
default
#
line
hidden
WriteLiteral
(
" </div>\r\n</div>"
);
#line 88 "..\..\PublishedPage.cshtml"
Write
(
Strings
.
MessagesPage_Table_State
);
#line default
#line hidden
WriteLiteral
(
"</th>\r\n"
);
#line 89 "..\..\PublishedPage.cshtml"
}
#line default
#line hidden
WriteLiteral
(
" <th class=\"align-right\">"
);
#line 90 "..\..\PublishedPage.cshtml"
Write
(
Strings
.
MessagesPage_Table_ExpiresAt
);
#line default
#line hidden
WriteLiteral
(
"</th>\r\n </tr>\r\n </thead>\r\n "
+
" <tbody>\r\n"
);
#line 94 "..\..\PublishedPage.cshtml"
foreach
(
var
message
in
succeededMessages
)
{
#line default
#line hidden
WriteLiteral
(
" <tr class=\"js-jobs-list-row hover\">\r\n "
+
" <td>\r\n <input type=\"checkbox\" class=\"js-j"
+
"obs-list-checkbox\" name=\"messages[]\" value=\""
);
#line 98 "..\..\PublishedPage.cshtml"
Write
(
message
.
Id
);
#line default
#line hidden
WriteLiteral
(
"\" />\r\n </td>\r\n <td class=\"w"
+
"ord-break\">\r\n <a href=\"javascript:;\" data-url=\'"
);
#line 101 "..\..\PublishedPage.cshtml"
Write
(
Url
.
To
(
"/published/message/"
)
+
message
.
Id
);
#line default
#line hidden
WriteLiteral
(
"\' class=\"openModal\">#"
);
#line 101 "..\..\PublishedPage.cshtml"
Write
(
message
.
Id
);
#line default
#line hidden
WriteLiteral
(
"</a>\r\n </td>\r\n <td>\r\n "
+
" "
);
#line 104 "..\..\PublishedPage.cshtml"
Write
(
message
.
Name
);
#line default
#line hidden
WriteLiteral
(
"\r\n </td>\r\n <td>\r\n "
+
" "
);
#line 107 "..\..\PublishedPage.cshtml"
Write
(
message
.
Retries
);
#line default
#line hidden
WriteLiteral
(
"\r\n </td>\r\n"
);
#line 109 "..\..\PublishedPage.cshtml"
if
(
string
.
Equals
(
StatusName
,
"Processing"
,
StringComparison
.
CurrentCultureIgnoreCase
))
{
#line default
#line hidden
WriteLiteral
(
" <td>\r\n "
);
#line 112 "..\..\PublishedPage.cshtml"
Write
(
message
.
StatusName
);
#line default
#line hidden
WriteLiteral
(
"\r\n </td>\r\n"
);
#line 114 "..\..\PublishedPage.cshtml"
}
#line default
#line hidden
WriteLiteral
(
" <td class=\"align-right\">\r\n"
);
#line 116 "..\..\PublishedPage.cshtml"
if
(
message
.
ExpiresAt
.
HasValue
)
{
#line default
#line hidden
#line 118 "..\..\PublishedPage.cshtml"
Write
(
Html
.
RelativeTime
(
message
.
ExpiresAt
.
Value
));
#line default
#line hidden
#line 118 "..\..\PublishedPage.cshtml"
}
#line default
#line hidden
WriteLiteral
(
" </td>\r\n\r\n </tr>\r\n"
);
#line 123 "..\..\PublishedPage.cshtml"
}
#line default
#line hidden
WriteLiteral
(
" </tbody>\r\n </table>\r\n </div>\r\n "
+
" "
);
#line 127 "..\..\PublishedPage.cshtml"
Write
(
Html
.
Paginator
(
pager
));
#line default
#line hidden
WriteLiteral
(
"\r\n </div>\r\n"
);
#line 129 "..\..\PublishedPage.cshtml"
#line default
#line hidden
WriteLiteral
(
@" <div>
<div class=""modal fade"" tabindex=""-1"" role=""dialog"">
<div class=""modal-dialog"" role=""document"">
<div class=""modal-content"">
<div class=""modal-header"">
<button type=""button"" class=""close"" data-dismiss=""modal"" aria-label=""Close""><span aria-hidden=""true"">×</span></button>
<h4 class=""modal-title"">Message Content</h4>
</div>
<div id=""jsonContent"" style=""max-height:500px;overflow-y:auto;"" class=""modal-body"">
</div>
<div class=""modal-footer"">
<button type=""button"" class=""btn btn-sm btn-primary"" id=""formatBtn"" onclick="""">"
);
#line 141 "..\..\PublishedPage.cshtml"
Write
(
Strings
.
MessagesPage_Modal_Format
);
#line default
#line hidden
WriteLiteral
(
"</button>\r\n <button type=\"button\" class=\"btn btn-sm bt"
+
"n-primary\" id=\"rawBtn\" onclick=\"\">"
);
#line 142 "..\..\PublishedPage.cshtml"
Write
(
Strings
.
MessagesPage_Modal_Raw
);
#line default
#line hidden
WriteLiteral
(
"</button>\r\n <button type=\"button\" class=\"btn btn-sm bt"
+
"n-primary\" id=\"expandBtn\" onclick=\"\">"
);
#line 143 "..\..\PublishedPage.cshtml"
Write
(
Strings
.
MessagesPage_Modal_Expand
);
#line default
#line hidden
WriteLiteral
(
"</button>\r\n <button type=\"button\" class=\"btn btn-sm bt"
+
"n-primary\" id=\"collapseBtn\" onclick=\"\">"
);
#line 144 "..\..\PublishedPage.cshtml"
Write
(
Strings
.
MessagesPage_Model_Collaspse
);
#line default
#line hidden
WriteLiteral
(
"</button>\r\n </div>\r\n </div><!-- /.modal"
+
"-content -->\r\n </div><!-- /.modal-dialog -->\r\n </div><"
+
"!-- /.modal -->\r\n </div>\r\n"
);
#line 150 "..\..\PublishedPage.cshtml"
}
#line default
#line hidden
WriteLiteral
(
" </div>\r\n</div>"
);
}
...
...
src/DotNetCore.CAP/Dashboard/Pages/ReceivedPage.cs
View file @
8d564cde
...
...
@@ -14,18 +14,15 @@ namespace DotNetCore.CAP.Dashboard.Pages
public
int
GetTotal
(
IMonitoringApi
api
)
{
if
(
String
.
Compare
(
StatusName
,
SucceededState
.
StateName
,
true
)
==
0
)
if
(
string
.
Equals
(
StatusName
,
SucceededState
.
StateName
,
StringComparison
.
CurrentCultureIgnoreCase
)
)
{
return
api
.
ReceivedSucceededCount
();
}
else
if
(
String
.
Compare
(
StatusName
,
ProcessingState
.
StateName
,
true
)
==
0
)
if
(
string
.
Equals
(
StatusName
,
ProcessingState
.
StateName
,
StringComparison
.
CurrentCultureIgnoreCase
)
)
{
return
api
.
ReceivedProcessingCount
();
}
else
{
return
api
.
ReceivedFailedCount
();
}
return
api
.
ReceivedFailedCount
();
}
}
}
\ No newline at end of file
src/DotNetCore.CAP/Dashboard/Pages/ReceivedPage.cshtml
View file @
8d564cde
...
...
@@ -22,7 +22,7 @@
var queryDto = new MessageQueryDto
{
MessageType = MessageType.Subscribe,
Group =group,
Group =
group,
Name = name,
Content = content,
StatusName = StatusName,
...
...
@@ -34,7 +34,7 @@
<div class="row">
<div class="col-md-3">
@Html.
Job
sSidebar(MessageType.Subscribe)
@Html.
Message
sSidebar(MessageType.Subscribe)
</div>
<div class="col-md-9">
<h1 class="page-header">@Strings.ReceivedPage_Title</h1>
...
...
@@ -72,7 +72,7 @@
data-loading-text="@Strings.Common_Enqueueing"
disabled="disabled">
<span class="glyphicon glyphicon-repeat"></span>
@Strings.Common_Re
queueJobs
@Strings.Common_Re
Consume
</button>
@Html.PerPageSelector(pager)
...
...
@@ -89,6 +89,10 @@
<th>@Strings.MessagesPage_Table_Group</th>
<th>@Strings.MessagesPage_Table_Name</th>
<th class="min-width">@Strings.MessagesPage_Table_Retries</th>
@if (string.Equals(StatusName, "Processing", StringComparison.CurrentCultureIgnoreCase))
{
<th>@Strings.MessagesPage_Table_State</th>
}
<th class="align-right">@Strings.MessagesPage_Table_ExpiresAt</th>
</tr>
</thead>
...
...
@@ -111,6 +115,12 @@
<td>
@message.Retries
</td>
@if (string.Equals(StatusName, "Processing", StringComparison.CurrentCultureIgnoreCase))
{
<td>
@message.StatusName
</td>
}
<td class="align-right">
@if (message.ExpiresAt.HasValue)
{
...
...
src/DotNetCore.CAP/Dashboard/Pages/ReceivedPage.generated.cs
View file @
8d564cde
...
...
@@ -11,46 +11,46 @@
namespace
DotNetCore.CAP.Dashboard.Pages
{
#
line
2
"..\..\Dashboard\Pages
\ReceivedPage.cshtml"
#line 2 "..\..
\ReceivedPage.cshtml"
using
System
;
#
line
default
#
line
hidden
#line default
#line hidden
using
System.Collections.Generic
;
using
System.Linq
;
using
System.Text
;
#
line
4
"..\..\Dashboard\Pages
\ReceivedPage.cshtml"
#line 4 "..\..
\ReceivedPage.cshtml"
using
DotNetCore.CAP.Dashboard
;
#
line
default
#
line
hidden
#
line
6
"..\..\Dashboard\Pages
\ReceivedPage.cshtml"
#line default
#line hidden
#line 6 "..\..
\ReceivedPage.cshtml"
using
DotNetCore.CAP.Dashboard.Monitoring
;
#
line
default
#
line
hidden
#
line
5
"..\..\Dashboard\Pages
\ReceivedPage.cshtml"
#line default
#line hidden
#line 5 "..\..
\ReceivedPage.cshtml"
using
DotNetCore.CAP.Dashboard.Pages
;
#
line
default
#
line
hidden
#
line
7
"..\..\Dashboard\Pages
\ReceivedPage.cshtml"
#line default
#line hidden
#line 7 "..\..
\ReceivedPage.cshtml"
using
DotNetCore.CAP.Dashboard.Resources
;
#
line
default
#
line
hidden
#
line
3
"..\..\Dashboard\Pages
\ReceivedPage.cshtml"
#line default
#line hidden
#line 3 "..\..
\ReceivedPage.cshtml"
using
DotNetCore.CAP.Models
;
#
line
default
#
line
hidden
#line default
#line hidden
[
System
.
CodeDom
.
Compiler
.
GeneratedCodeAttribute
(
"RazorGenerator"
,
"2.0.0.0"
)]
internal
partial
class
ReceivedPage
:
RazorPage
{
...
...
@@ -60,7 +60,7 @@ namespace DotNetCore.CAP.Dashboard.Pages
{
WriteLiteral
(
"\r\n"
);
WriteLiteral
(
"\r\n"
);
...
...
@@ -70,170 +70,170 @@ WriteLiteral("\r\n");
#
line
9
"..\..\Dashboard\Pages\ReceivedPage.cshtml"
Layout
=
new
LayoutPage
(
Strings
.
ReceivedMessagesPage_Title
);
int
from
,
perPage
;
#line 9 "..\..\ReceivedPage.cshtml"
int
.
TryParse
(
Query
(
"from"
),
out
from
);
int
.
TryParse
(
Query
(
"count"
),
out
perPage
);
string
group
=
Query
(
"group"
);
string
name
=
Query
(
"name"
);
string
content
=
Query
(
"content"
);
Layout
=
new
LayoutPage
(
Strings
.
ReceivedMessagesPage_Title
);
var
monitor
=
Storage
.
GetMonitoringApi
();
var
pager
=
new
Pager
(
from
,
perPage
,
GetTotal
(
monitor
));
var
queryDto
=
new
MessageQueryDto
{
MessageType
=
MessageType
.
Subscribe
,
Group
=
group
,
Name
=
name
,
Content
=
content
,
StatusName
=
StatusName
,
CurrentPage
=
pager
.
CurrentPage
-
1
,
PageSize
=
pager
.
RecordsPerPage
};
var
succeededMessages
=
monitor
.
Messages
(
queryDto
);
int
from
,
perPage
;
int
.
TryParse
(
Query
(
"from"
),
out
from
);
int
.
TryParse
(
Query
(
"count"
),
out
perPage
);
string
group
=
Query
(
"group"
);
string
name
=
Query
(
"name"
);
string
content
=
Query
(
"content"
);
#
line
default
#
line
hidden
WriteLiteral
(
"\r\n<div class=\"row\">\r\n <div class=\"col-md-3\">\r\n "
);
var
monitor
=
Storage
.
GetMonitoringApi
();
var
pager
=
new
Pager
(
from
,
perPage
,
GetTotal
(
monitor
));
var
queryDto
=
new
MessageQueryDto
{
MessageType
=
MessageType
.
Subscribe
,
Group
=
group
,
Name
=
name
,
Content
=
content
,
StatusName
=
StatusName
,
CurrentPage
=
pager
.
CurrentPage
-
1
,
PageSize
=
pager
.
RecordsPerPage
};
var
succeededMessages
=
monitor
.
Messages
(
queryDto
);
#
line
37
"..\..\Dashboard\Pages\ReceivedPage.cshtml"
Write
(
Html
.
MessagesSidebar
(
MessageType
.
Subscribe
));
#
line
default
#
line
hidden
WriteLiteral
(
"\r\n </div>\r\n <div class=\"col-md-9\">\r\n <h1 class=\"page-header\">"
);
#line default
#line hidden
WriteLiteral
(
"\r\n<div class=\"row\">\r\n <div class=\"col-md-3\">\r\n "
);
#
line
40
"..\..\Dashboard\Pages\ReceivedPage.cshtml"
Write
(
Strings
.
ReceivedPage_Title
);
#
line
default
#
line
hidden
WriteLiteral
(
"</h1>\r\n\r\n"
);
#line 37 "..\..\ReceivedPage.cshtml"
Write
(
Html
.
MessagesSidebar
(
MessageType
.
Subscribe
));
#
line
42
"..\..\Dashboard\Pages\ReceivedPage.cshtml"
if
(
succeededMessages
.
Count
==
0
)
{
#line default
#line hidden
WriteLiteral
(
"\r\n </div>\r\n <div class=\"col-md-9\">\r\n <h1 class=\"page-header\">"
);
#
line
default
#
line
hidden
WriteLiteral
(
" <div class=\"alert alert-info\">\r\n "
);
#
line
45
"..\..\Dashboard\Pages\ReceivedPage.cshtml"
Write
(
Strings
.
MessagesPage_NoMessages
);
#line 40 "..\..\ReceivedPage.cshtml"
Write
(
Strings
.
ReceivedPage_Title
);
#
line
default
#
line
hidden
WriteLiteral
(
"\r\n </div>\r\n"
);
#line default
#line hidden
WriteLiteral
(
"</h1>\r\n\r\n"
);
#line 42 "..\..\ReceivedPage.cshtml"
if
(
succeededMessages
.
Count
==
0
)
{
#line default
#line hidden
WriteLiteral
(
" <div class=\"alert alert-info\">\r\n "
);
#line 45 "..\..\ReceivedPage.cshtml"
Write
(
Strings
.
MessagesPage_NoMessages
);
#
line
47
"..\..\Dashboard\Pages\ReceivedPage.cshtml"
}
else
{
#
line
default
#
line
hidden
WriteLiteral
(
@" <div class=""js-jobs-list"">
#line default
#line hidden
WriteLiteral
(
"\r\n </div>\r\n"
);
#line 47 "..\..\ReceivedPage.cshtml"
}
else
{
#line default
#line hidden
WriteLiteral
(
@" <div class=""js-jobs-list"">
<div class=""btn-toolbar btn-toolbar-top"">
<form class=""row"">
<span class=""col-md-2"">
<input type=""text"" class=""form-control"" name=""name"" value="""
);
<input type=""text"" class=""form-control"" name=""group"" value="""
);
#line 54 "..\..\ReceivedPage.cshtml"
Write
(
Query
(
"group"
));
#line default
#line hidden
WriteLiteral
(
"\" placeholder=\""
);
#line 54 "..\..\ReceivedPage.cshtml"
Write
(
Strings
.
MessagesPage_Query_MessageGroup
);
#line default
#line hidden
WriteLiteral
(
"\" />\r\n </span>\r\n <span class=\"col-m"
+
"d-3\">\r\n <input type=\"text\" class=\"form-control\" name="
+
"\"name\" value=\""
);
#
line
54
"..\..\Dashboard\Pages\ReceivedPage.cshtml"
Write
(
Query
(
"group"
));
#
line
default
#
line
hidden
WriteLiteral
(
"\" placeholder=\""
);
#line 57 "..\..\ReceivedPage.cshtml"
Write
(
Query
(
"name"
));
#
line
54
"..\..\Dashboard\Pages\ReceivedPage.cshtml"
Write
(
Strings
.
MessagesPage_Query_MessageGroup
);
#line default
#line hidden
WriteLiteral
(
"\" placeholder=\""
);
#
line
default
#
line
hidden
WriteLiteral
(
"\" />\r\n </span>\r\n <span class=\"col-m"
+
"d-3\">\r\n <input type=\"text\" class=\"form-control\" name="
+
"\"name\" value=\""
);
#
line
57
"..\..\Dashboard\Pages\ReceivedPage.cshtml"
Write
(
Query
(
"name"
));
#line 57 "..\..\ReceivedPage.cshtml"
Write
(
Strings
.
MessagesPage_Query_MessageName
);
#
line
default
#
line
hidden
WriteLiteral
(
"\" placeholder=\""
);
#line default
#line hidden
WriteLiteral
(
"\" />\r\n </span>\r\n <div class=\"col-md"
+
"-5\">\r\n <div class=\"input-group\">\r\n "
+
" <input type=\"text\" class=\"form-control\" name=\"content\" value=\""
);
#
line
57
"..\..\Dashboard\Pages\ReceivedPage.cshtml"
Write
(
Strings
.
MessagesPage_Query_MessageName
);
#
line
default
#
line
hidden
WriteLiteral
(
"\" />\r\n </span>\r\n <div class=\"col-md"
+
"-5\">\r\n <div class=\"input-group\">\r\n "
+
" <input type=\"text\" class=\"form-control\" name=\"content\" value=\""
);
#line 61 "..\..\ReceivedPage.cshtml"
Write
(
Query
(
"content"
));
#
line
61
"..\..\Dashboard\Pages\ReceivedPage.cshtml"
Write
(
Query
(
"content"
));
#
line
default
#
line
hidden
WriteLiteral
(
"\" placeholder=\""
);
#line default
#line hidden
WriteLiteral
(
"\" placeholder=\""
);
#
line
61
"..\..\Dashboard\Pages\ReceivedPage.cshtml"
Write
(
Strings
.
MessagesPage_Query_MessageBody
);
#
line
default
#
line
hidden
WriteLiteral
(
"\" />\r\n <span class=\"input-group-btn\">\r\n "
+
" <button class=\"btn btn-info\">"
);
#line 61 "..\..\ReceivedPage.cshtml"
Write
(
Strings
.
MessagesPage_Query_MessageBody
);
#
line
63
"..\..\Dashboard\Pages\ReceivedPage.cshtml"
Write
(
Strings
.
MessagesPage_Query_Button
);
#line default
#line hidden
WriteLiteral
(
"\" />\r\n <span class=\"input-group-btn\">\r\n "
+
" <button class=\"btn btn-info\">"
);
#
line
default
#
line
hidden
WriteLiteral
(
@"</button>
#line 63 "..\..\ReceivedPage.cshtml"
Write
(
Strings
.
MessagesPage_Query_Button
);
#line default
#line hidden
WriteLiteral
(
@"</button>
</span>
</div>
</div>
...
...
@@ -244,45 +244,45 @@ WriteLiteral(@"</button>
data-url="""
);
#
line
71
"..\..\Dashboard\Pages\ReceivedPage.cshtml"
Write
(
Url
.
To
(
"/received/requeue"
));
#
line
default
#
line
hidden
WriteLiteral
(
"\"\r\n data-loading-text=\""
);
#line 71 "..\..\ReceivedPage.cshtml"
Write
(
Url
.
To
(
"/received/requeue"
));
#line default
#line hidden
WriteLiteral
(
"\"\r\n data-loading-text=\""
);
#line 72 "..\..\ReceivedPage.cshtml"
Write
(
Strings
.
Common_Enqueueing
);
#line default
#line hidden
WriteLiteral
(
"\"\r\n disabled=\"disabled\">\r\n <spa"
+
"n class=\"glyphicon glyphicon-repeat\"></span>\r\n "
);
#
line
72
"..\..\Dashboard\Pages\ReceivedPage.cshtml"
Write
(
Strings
.
Common_Enqueueing
);
#
line
default
#
line
hidden
WriteLiteral
(
"\"\r\n disabled=\"disabled\">\r\n <spa"
+
"n class=\"glyphicon glyphicon-repeat\"></span>\r\n "
);
#line 75 "..\..\ReceivedPage.cshtml"
Write
(
Strings
.
Common_ReConsume
);
#
line
75
"..\..\Dashboard\Pages\ReceivedPage.cshtml"
Write
(
Strings
.
Common_RequeueJobs
);
#line default
#line hidden
WriteLiteral
(
"\r\n </button>\r\n\r\n "
);
#
line
default
#
line
hidden
WriteLiteral
(
"\r\n </button>\r\n\r\n "
);
#line 78 "..\..\ReceivedPage.cshtml"
Write
(
Html
.
PerPageSelector
(
pager
));
#
line
78
"..\..\Dashboard\Pages\ReceivedPage.cshtml"
Write
(
Html
.
PerPageSelector
(
pager
));
#
line
default
#
line
hidden
WriteLiteral
(
@"
#line default
#line hidden
WriteLiteral
(
@"
</div>
<div class=""table-responsive"">
...
...
@@ -295,192 +295,254 @@ WriteLiteral(@"
<th>"
);
#
line
88
"..\..\Dashboard\Pages\ReceivedPage.cshtml"
Write
(
Strings
.
MessagesPage_Table_Code
);
#
line
default
#
line
hidden
WriteLiteral
(
"</th>\r\n <th>"
);
#line 88 "..\..\ReceivedPage.cshtml"
Write
(
Strings
.
MessagesPage_Table_Code
);
#
line
89
"..\..\Dashboard\Pages\ReceivedPage.cshtml"
Write
(
Strings
.
MessagesPage_Table_Group
);
#line default
#line hidden
WriteLiteral
(
"</th>\r\n <th>"
);
#
line
default
#
line
hidden
WriteLiteral
(
"</th>\r\n <th>"
);
#
line
90
"..\..\Dashboard\Pages\ReceivedPage.cshtml"
Write
(
Strings
.
MessagesPage_Table_Name
);
#line 89 "..\..\ReceivedPage.cshtml"
Write
(
Strings
.
MessagesPage_Table_Group
);
#
line
default
#
line
hidden
WriteLiteral
(
"</th>\r\n <th class=\"min-width\">"
);
#line default
#line hidden
WriteLiteral
(
"</th>\r\n <th>"
);
#
line
91
"..\..\Dashboard\Pages\ReceivedPage.cshtml"
Write
(
Strings
.
MessagesPage_Table_Retries
);
#
line
default
#
line
hidden
WriteLiteral
(
"</th>\r\n <th class=\"align-right\">"
);
#line 90 "..\..\ReceivedPage.cshtml"
Write
(
Strings
.
MessagesPage_Table_Name
);
#
line
92
"..\..\Dashboard\Pages\ReceivedPage.cshtml"
Write
(
Strings
.
MessagesPage_Table_ExpiresAt
);
#
line
default
#
line
hidden
WriteLiteral
(
"</th>\r\n </tr>\r\n </thead>\r\n "
+
" <tbody>\r\n"
);
#line default
#line hidden
WriteLiteral
(
"</th>\r\n <th class=\"min-width\">"
);
#
line
96
"..\..\Dashboard\Pages\ReceivedPage.cshtml"
foreach
(
var
message
in
succeededMessages
)
{
#
line
default
#
line
hidden
WriteLiteral
(
" <tr class=\"js-jobs-list-row hover\">\r\n "
+
" <td>\r\n <input typ"
+
"e=\"checkbox\" class=\"js-jobs-list-checkbox\" name=\"messages[]\" value=\""
);
#line 91 "..\..\ReceivedPage.cshtml"
Write
(
Strings
.
MessagesPage_Table_Retries
);
#
line
100
"..\..\Dashboard\Pages\ReceivedPage.cshtml"
Write
(
message
.
Id
);
#line default
#line hidden
WriteLiteral
(
"</th>\r\n"
);
#
line
default
#
line
hidden
WriteLiteral
(
"\" />\r\n </td>\r\n "
+
" <td class=\"word-break\">\r\n <a href=\"ja"
+
"vascript:;\" data-url=\'"
);
#
line
103
"..\..\Dashboard\Pages\ReceivedPage.cshtml"
Write
(
Url
.
To
(
"/received/message/"
)+
message
.
Id
);
#line 92 "..\..\ReceivedPage.cshtml"
if
(
string
.
Equals
(
StatusName
,
"Processing"
,
StringComparison
.
CurrentCultureIgnoreCase
))
{
#
line
default
#
line
hidden
WriteLiteral
(
"\' class=\"openModal\">#"
);
#line default
#line hidden
WriteLiteral
(
" <th>"
);
#
line
103
"..\..\Dashboard\Pages\ReceivedPage.cshtml"
Write
(
message
.
Id
);
#
line
default
#
line
hidden
WriteLiteral
(
"</a>\r\n </td>\r\n "
+
" <td>\r\n "
);
#line 94 "..\..\ReceivedPage.cshtml"
Write
(
Strings
.
MessagesPage_Table_State
);
#
line
106
"..\..\Dashboard\Pages\ReceivedPage.cshtml"
Write
(
message
.
Group
);
#
line
default
#
line
hidden
WriteLiteral
(
"\r\n </td>\r\n "
+
"<td>\r\n "
);
#line default
#line hidden
WriteLiteral
(
"</th>\r\n"
);
#
line
109
"..\..\Dashboard\Pages\ReceivedPage.cshtml"
Write
(
message
.
Name
);
#
line
default
#
line
hidden
WriteLiteral
(
"\r\n </td>\r\n "
+
"<td>\r\n "
);
#line 95 "..\..\ReceivedPage.cshtml"
}
#line default
#line hidden
WriteLiteral
(
" <th class=\"align-right\">"
);
#
line
112
"..\..\Dashboard\Pages\ReceivedPage.cshtml"
Write
(
message
.
Retries
);
#
line
default
#
line
hidden
WriteLiteral
(
"\r\n </td>\r\n "
+
"<td class=\"align-right\">\r\n"
);
#line 96 "..\..\ReceivedPage.cshtml"
Write
(
Strings
.
MessagesPage_Table_ExpiresAt
);
#
line
115
"..\..\Dashboard\Pages\ReceivedPage.cshtml"
if
(
message
.
ExpiresAt
.
HasValue
)
{
#
line
default
#
line
hidden
#
line
117
"..\..\Dashboard\Pages\ReceivedPage.cshtml"
Write
(
Html
.
RelativeTime
(
message
.
ExpiresAt
.
Value
));
#line default
#line hidden
WriteLiteral
(
"</th>\r\n </tr>\r\n </thead>\r\n "
+
" <tbody>\r\n"
);
#
line
default
#
line
hidden
#
line
117
"..\..\Dashboard\Pages\ReceivedPage.cshtml"
}
#
line
default
#
line
hidden
WriteLiteral
(
" </td>\r\n\r\n </tr"
+
">\r\n"
);
#line 100 "..\..\ReceivedPage.cshtml"
foreach
(
var
message
in
succeededMessages
)
{
#
line
122
"..\..\Dashboard\Pages\ReceivedPage.cshtml"
}
#
line
default
#
line
hidden
WriteLiteral
(
" </tbody>\r\n </table>\r\n <
"
+
"/div>\r\n
"
);
#line default
#line hidden
WriteLiteral
(
" <tr class=\"js-jobs-list-row hover\">\r\n "
+
" <td>\r\n <input typ
"
+
"e=\"checkbox\" class=\"js-jobs-list-checkbox\" name=\"messages[]\" value=\"
"
);
#
line
126
"..\..\Dashboard\Pages\ReceivedPage.cshtml"
Write
(
Html
.
Paginator
(
pager
));
#
line
default
#
line
hidden
WriteLiteral
(
"\r\n </div>\r\n"
);
#line 104 "..\..\ReceivedPage.cshtml"
Write
(
message
.
Id
);
#
line
128
"..\..\Dashboard\Pages\ReceivedPage.cshtml"
#line default
#line hidden
WriteLiteral
(
"\" />\r\n </td>\r\n "
+
" <td class=\"word-break\">\r\n <a href=\"ja"
+
"vascript:;\" data-url=\'"
);
#
line
default
#
line
hidden
WriteLiteral
(
@" <div>
#line 107 "..\..\ReceivedPage.cshtml"
Write
(
Url
.
To
(
"/received/message/"
)
+
message
.
Id
);
#line default
#line hidden
WriteLiteral
(
"\' class=\"openModal\">#"
);
#line 107 "..\..\ReceivedPage.cshtml"
Write
(
message
.
Id
);
#line default
#line hidden
WriteLiteral
(
"</a>\r\n </td>\r\n "
+
" <td>\r\n "
);
#line 110 "..\..\ReceivedPage.cshtml"
Write
(
message
.
Group
);
#line default
#line hidden
WriteLiteral
(
"\r\n </td>\r\n "
+
"<td>\r\n "
);
#line 113 "..\..\ReceivedPage.cshtml"
Write
(
message
.
Name
);
#line default
#line hidden
WriteLiteral
(
"\r\n </td>\r\n "
+
"<td>\r\n "
);
#line 116 "..\..\ReceivedPage.cshtml"
Write
(
message
.
Retries
);
#line default
#line hidden
WriteLiteral
(
"\r\n </td>\r\n"
);
#line 118 "..\..\ReceivedPage.cshtml"
if
(
string
.
Equals
(
StatusName
,
"Processing"
,
StringComparison
.
CurrentCultureIgnoreCase
))
{
#line default
#line hidden
WriteLiteral
(
" <td>\r\n "
+
" "
);
#line 121 "..\..\ReceivedPage.cshtml"
Write
(
message
.
StatusName
);
#line default
#line hidden
WriteLiteral
(
"\r\n </td>\r\n"
);
#line 123 "..\..\ReceivedPage.cshtml"
}
#line default
#line hidden
WriteLiteral
(
" <td class=\"align-right\">\r\n"
);
#line 125 "..\..\ReceivedPage.cshtml"
if
(
message
.
ExpiresAt
.
HasValue
)
{
#line default
#line hidden
#line 127 "..\..\ReceivedPage.cshtml"
Write
(
Html
.
RelativeTime
(
message
.
ExpiresAt
.
Value
));
#line default
#line hidden
#line 127 "..\..\ReceivedPage.cshtml"
}
#line default
#line hidden
WriteLiteral
(
" </td>\r\n\r\n </tr"
+
">\r\n"
);
#line 132 "..\..\ReceivedPage.cshtml"
}
#line default
#line hidden
WriteLiteral
(
" </tbody>\r\n </table>\r\n <"
+
"/div>\r\n "
);
#line 136 "..\..\ReceivedPage.cshtml"
Write
(
Html
.
Paginator
(
pager
));
#line default
#line hidden
WriteLiteral
(
"\r\n </div>\r\n"
);
#line 138 "..\..\ReceivedPage.cshtml"
#line default
#line hidden
WriteLiteral
(
@" <div>
<div class=""modal fade"" tabindex=""-1"" role=""dialog"">
<div class=""modal-dialog"" role=""document"">
<div class=""modal-content"">
...
...
@@ -494,59 +556,59 @@ WriteLiteral(@" <div>
<button type=""button"" class=""btn btn-sm btn-primary"" id=""formatBtn"" onclick="""">"
);
#
line
140
"..\..\Dashboard\Pages\ReceivedPage.cshtml"
Write
(
Strings
.
MessagesPage_Modal_Format
);
#
line
default
#
line
hidden
WriteLiteral
(
"</button>\r\n <button type=\"button\" class=\"btn btn-s"
+
"m btn-primary\" id=\"rawBtn\" onclick=\"\">"
);
#line 150 "..\..\ReceivedPage.cshtml"
Write
(
Strings
.
MessagesPage_Modal_Format
);
#
line
141
"..\..\Dashboard\Pages\ReceivedPage.cshtml"
Write
(
Strings
.
MessagesPage_Modal_Raw
);
#line default
#line hidden
WriteLiteral
(
"</button>\r\n <button type=\"button\" class=\"btn btn-s"
+
"m btn-primary\" id=\"rawBtn\" onclick=\"\">"
);
#
line
default
#
line
hidden
WriteLiteral
(
"</button>\r\n <button type=\"button\" class=\"btn btn-s"
+
"m btn-primary\" id=\"expandBtn\" onclick=\"\">"
);
#
line
142
"..\..\Dashboard\Pages\ReceivedPage.cshtml"
Write
(
Strings
.
MessagesPage_Modal_Expand
);
#line 151 "..\..\ReceivedPage.cshtml"
Write
(
Strings
.
MessagesPage_Modal_Raw
);
#
line
default
#
line
hidden
WriteLiteral
(
"</button>\r\n <button type=\"button\" class=\"btn btn-s"
+
"m btn-primary\" id=\"collapseBtn\" onclick=\"\">"
);
#line default
#line hidden
WriteLiteral
(
"</button>\r\n <button type=\"button\" class=\"btn btn-s"
+
"m btn-primary\" id=\"expandBtn\" onclick=\"\">"
);
#
line
143
"..\..\Dashboard\Pages\ReceivedPage.cshtml"
Write
(
Strings
.
MessagesPage_Model_Collaspse
);
#
line
default
#
line
hidden
WriteLiteral
(
"</button>\r\n </div>\r\n </div><!--"
+
" /.modal-content -->\r\n </div><!-- /.modal-dialog -->\r\n "
+
" </div><!-- /.modal -->\r\n </div>\r\n"
);
#line 152 "..\..\ReceivedPage.cshtml"
Write
(
Strings
.
MessagesPage_Modal_Expand
);
#
line
149
"..\..\Dashboard\Pages\ReceivedPage.cshtml"
}
#
line
default
#
line
hidden
WriteLiteral
(
" </div>\r\n</div>"
);
#line default
#line hidden
WriteLiteral
(
"</button>\r\n <button type=\"button\" class=\"btn btn-s"
+
"m btn-primary\" id=\"collapseBtn\" onclick=\"\">"
);
#line 153 "..\..\ReceivedPage.cshtml"
Write
(
Strings
.
MessagesPage_Model_Collaspse
);
#line default
#line hidden
WriteLiteral
(
"</button>\r\n </div>\r\n </div><!--"
+
" /.modal-content -->\r\n </div><!-- /.modal-dialog -->\r\n "
+
" </div><!-- /.modal -->\r\n </div>\r\n"
);
#line 159 "..\..\ReceivedPage.cshtml"
}
#line default
#line hidden
WriteLiteral
(
" </div>\r\n</div>"
);
}
...
...
src/DotNetCore.CAP/Dashboard/Pages/SidebarMenu.cs
View file @
8d564cde
...
...
@@ -3,12 +3,11 @@ using System.Collections.Generic;
namespace
DotNetCore.CAP.Dashboard.Pages
{
partial
class
SidebarMenu
internal
partial
class
SidebarMenu
{
public
SidebarMenu
(
IEnumerable
<
Func
<
RazorPage
,
MenuItem
>>
items
)
{
if
(
items
==
null
)
throw
new
ArgumentNullException
(
nameof
(
items
));
Items
=
items
;
Items
=
items
??
throw
new
ArgumentNullException
(
nameof
(
items
));
}
public
IEnumerable
<
Func
<
RazorPage
,
MenuItem
>>
Items
{
get
;
}
...
...
src/DotNetCore.CAP/Dashboard/Pages/SubscriberPage.cshtml
View file @
8d564cde
...
...
@@ -39,7 +39,7 @@
{
var i = 0;
var rowCount = subscriber.Value.Count;
@
foreach (var column in subscriber.Value)
foreach (var column in subscriber.Value)
{
<tr>
@if (i == 0)
...
...
src/DotNetCore.CAP/Dashboard/RouteCollectionExtensions.cs
View file @
8d564cde
...
...
@@ -44,13 +44,13 @@ namespace DotNetCore.CAP.Dashboard
public
static
void
AddJsonResult
(
this
RouteCollection
routes
,
string
pathTemplate
,
Func
<
DashboardContext
,
string
>
J
sonfunc
)
Func
<
DashboardContext
,
string
>
j
sonfunc
)
{
if
(
routes
==
null
)
throw
new
ArgumentNullException
(
nameof
(
routes
));
if
(
pathTemplate
==
null
)
throw
new
ArgumentNullException
(
nameof
(
pathTemplate
));
if
(
Jsonfunc
==
null
)
throw
new
ArgumentNullException
(
nameof
(
J
sonfunc
));
if
(
jsonfunc
==
null
)
throw
new
ArgumentNullException
(
nameof
(
j
sonfunc
));
routes
.
Add
(
pathTemplate
,
new
JsonDispatcher
(
J
sonfunc
));
routes
.
Add
(
pathTemplate
,
new
JsonDispatcher
(
j
sonfunc
));
}
public
static
void
AddPublishBatchCommand
(
...
...
src/DotNetCore.CAP/Dashboard/UrlHelper.cs
View file @
8d564cde
...
...
@@ -9,8 +9,7 @@ namespace DotNetCore.CAP.Dashboard
public
UrlHelper
(
DashboardContext
context
)
{
if
(
context
==
null
)
throw
new
ArgumentNullException
(
nameof
(
context
));
_context
=
context
;
_context
=
context
??
throw
new
ArgumentNullException
(
nameof
(
context
));
}
public
string
To
(
string
relativePath
)
...
...
src/DotNetCore.CAP/IBootstrapper.Default.cs
View file @
8d564cde
...
...
@@ -3,7 +3,6 @@ using System.Collections.Generic;
using
System.Threading
;
using
System.Threading.Tasks
;
using
Microsoft.AspNetCore.Hosting
;
using
Microsoft.Extensions.DependencyInjection
;
using
Microsoft.Extensions.Logging
;
using
Microsoft.Extensions.Options
;
...
...
@@ -12,7 +11,7 @@ namespace DotNetCore.CAP
/// <summary>
/// Default implement of <see cref="IBootstrapper"/>.
/// </summary>
public
class
DefaultBootstrapper
:
IBootstrapper
internal
class
DefaultBootstrapper
:
IBootstrapper
{
private
readonly
ILogger
<
DefaultBootstrapper
>
_logger
;
private
readonly
IApplicationLifetime
_appLifetime
;
...
...
src/DotNetCore.CAP/IConsumerHandler.Default.cs
View file @
8d564cde
...
...
@@ -8,20 +8,17 @@ using DotNetCore.CAP.Models;
using
DotNetCore.CAP.Processor
;
using
Microsoft.Extensions.DependencyInjection
;
using
Microsoft.Extensions.Logging
;
using
Microsoft.Extensions.Options
;
namespace
DotNetCore.CAP
{
public
class
ConsumerHandler
:
IConsumerHandler
,
IDisposable
internal
class
ConsumerHandler
:
IConsumerHandler
{
private
readonly
IServiceProvider
_serviceProvider
;
private
readonly
IConsumerInvokerFactory
_consumerInvokerFactory
;
private
readonly
IConsumerClientFactory
_consumerClientFactory
;
private
readonly
ILogger
_logger
;
private
readonly
CancellationTokenSource
_cts
;
private
readonly
MethodMatcherCache
_selector
;
private
readonly
CapOptions
_options
;
private
readonly
TimeSpan
_pollingDelay
=
TimeSpan
.
FromSeconds
(
1
);
...
...
@@ -30,18 +27,14 @@ namespace DotNetCore.CAP
public
ConsumerHandler
(
IServiceProvider
serviceProvider
,
IConsumerInvokerFactory
consumerInvokerFactory
,
IConsumerClientFactory
consumerClientFactory
,
ILogger
<
ConsumerHandler
>
logger
,
MethodMatcherCache
selector
,
IOptions
<
CapOptions
>
options
)
MethodMatcherCache
selector
)
{
_selector
=
selector
;
_logger
=
logger
;
_serviceProvider
=
serviceProvider
;
_consumerInvokerFactory
=
consumerInvokerFactory
;
_consumerClientFactory
=
consumerClientFactory
;
_options
=
options
.
Value
;
_cts
=
new
CancellationTokenSource
();
}
...
...
@@ -99,7 +92,8 @@ namespace DotNetCore.CAP
using
(
var
scope
=
_serviceProvider
.
CreateScope
())
{
var
receviedMessage
=
StoreMessage
(
scope
,
message
);
StoreMessage
(
scope
,
message
);
client
.
Commit
();
}
Pulse
();
...
...
@@ -111,7 +105,7 @@ namespace DotNetCore.CAP
};
}
private
CapReceivedMessage
StoreMessage
(
IServiceScope
serviceScope
,
MessageContext
messageContext
)
private
static
void
StoreMessage
(
IServiceScope
serviceScope
,
MessageContext
messageContext
)
{
var
provider
=
serviceScope
.
ServiceProvider
;
var
messageStore
=
provider
.
GetRequiredService
<
IStorageConnection
>();
...
...
@@ -120,7 +114,6 @@ namespace DotNetCore.CAP
StatusName
=
StatusName
.
Scheduled
,
};
messageStore
.
StoreReceivedMessageAsync
(
receivedMessage
).
GetAwaiter
().
GetResult
();
return
receivedMessage
;
}
public
void
Pulse
()
...
...
src/DotNetCore.CAP/IProcessingServer.cs
View file @
8d564cde
...
...
@@ -2,6 +2,7 @@
namespace
DotNetCore.CAP
{
/// <inheritdoc />
/// <summary>
/// A process thread abstract of job process.
/// </summary>
...
...
src/DotNetCore.CAP/IQueueExecutor.Publish.Base.cs
View file @
8d564cde
...
...
@@ -41,7 +41,7 @@ namespace DotNetCore.CAP
var
result
=
await
PublishAsync
(
message
.
Name
,
message
.
Content
);
sp
.
Stop
();
var
newState
=
default
(
IState
)
;
IState
newState
;
if
(!
result
.
Succeeded
)
{
var
shouldRetry
=
await
UpdateMessageForRetryAsync
(
message
,
connection
);
...
...
@@ -78,11 +78,10 @@ namespace DotNetCore.CAP
}
}
private
async
Task
<
bool
>
UpdateMessageForRetryAsync
(
CapPublishedMessage
message
,
IStorageConnection
connection
)
private
static
async
Task
<
bool
>
UpdateMessageForRetryAsync
(
CapPublishedMessage
message
,
IStorageConnection
connection
)
{
var
retryBehavior
=
RetryBehavior
.
DefaultRetry
;
var
now
=
DateTime
.
Now
;
var
retries
=
++
message
.
Retries
;
if
(
retries
>=
retryBehavior
.
RetryCount
)
{
...
...
src/DotNetCore.CAP/IQueueExecutor.Subscibe.cs
View file @
8d564cde
...
...
@@ -47,7 +47,7 @@ namespace DotNetCore.CAP
var
result
=
await
ExecuteSubscribeAsync
(
message
);
sp
.
Stop
();
var
newState
=
default
(
IState
)
;
IState
newState
;
if
(!
result
.
Succeeded
)
{
var
shouldRetry
=
await
UpdateMessageForRetryAsync
(
message
,
connection
);
...
...
src/DotNetCore.CAP/Infrastructure/Helper.cs
View file @
8d564cde
...
...
@@ -57,8 +57,7 @@ namespace DotNetCore.CAP.Infrastructure
public
static
DateTime
DeserializeDateTime
(
string
value
)
{
long
timestamp
;
if
(
long
.
TryParse
(
value
,
out
timestamp
))
if
(
long
.
TryParse
(
value
,
out
var
timestamp
))
{
return
FromTimestamp
(
timestamp
);
}
...
...
@@ -102,13 +101,13 @@ namespace DotNetCore.CAP.Infrastructure
private
static
bool
IsSimpleType
(
Type
type
)
{
return
type
.
GetTypeInfo
().
IsPrimitive
||
type
.
Equals
(
typeof
(
decimal
)
)
||
type
.
Equals
(
typeof
(
string
)
)
||
type
.
Equals
(
typeof
(
DateTime
)
)
||
type
.
Equals
(
typeof
(
Guid
)
)
||
type
.
Equals
(
typeof
(
DateTimeOffset
)
)
||
type
.
Equals
(
typeof
(
TimeSpan
)
)
||
type
.
Equals
(
typeof
(
Uri
)
);
type
==
typeof
(
decimal
)
||
type
==
typeof
(
string
)
||
type
==
typeof
(
DateTime
)
||
type
==
typeof
(
Guid
)
||
type
==
typeof
(
DateTimeOffset
)
||
type
==
typeof
(
TimeSpan
)
||
type
==
typeof
(
Uri
);
}
}
}
\ No newline at end of file
src/DotNetCore.CAP/Internal/IConsumerInvoker.Default.cs
View file @
8d564cde
...
...
@@ -45,7 +45,7 @@ namespace DotNetCore.CAP.Internal
var
jsonConent
=
_consumerContext
.
DeliverMessage
.
Content
;
var
message
=
serializer
.
DeSerialize
<
CapMessageDto
>(
jsonConent
);
object
result
=
null
;
object
result
;
if
(
_executor
.
MethodParameters
.
Length
>
0
)
{
result
=
await
ExecuteWithParameterAsync
(
obj
,
message
.
Content
.
ToString
());
...
...
@@ -68,10 +68,7 @@ namespace DotNetCore.CAP.Internal
{
return
await
_executor
.
ExecuteAsync
(
@class
);
}
else
{
return
_executor
.
Execute
(
@class
);
}
return
_executor
.
Execute
(
@class
);
}
private
async
Task
<
object
>
ExecuteWithParameterAsync
(
object
@class
,
string
parameterString
)
...
...
@@ -87,15 +84,9 @@ namespace DotNetCore.CAP.Internal
{
return
await
_executor
.
ExecuteAsync
(
@class
,
bindResult
.
Model
);
}
else
{
return
_executor
.
Execute
(
@class
,
bindResult
.
Model
);
}
}
else
{
throw
new
MethodBindException
(
$"Parameters:
{
firstParameter
.
Name
}
bind failed! ParameterString is:
{
parameterString
}
"
);
return
_executor
.
Execute
(
@class
,
bindResult
.
Model
);
}
throw
new
MethodBindException
(
$"Parameters:
{
firstParameter
.
Name
}
bind failed! ParameterString is:
{
parameterString
}
"
);
}
catch
(
FormatException
ex
)
{
...
...
src/DotNetCore.CAP/Internal/IConsumerServiceSelector.Default.cs
View file @
8d564cde
...
...
@@ -8,8 +8,9 @@ using Microsoft.Extensions.DependencyInjection;
namespace
DotNetCore.CAP.Internal
{
/// <inheritdoc />
/// <summary>
/// A default <see cref="
IConsumerServiceSelector"
/> implementation.
/// A default <see cref="
T:DotNetCore.CAP.Abstractions.IConsumerServiceSelector"
/> implementation.
/// </summary>
public
class
DefaultConsumerServiceSelector
:
IConsumerServiceSelector
{
...
...
@@ -39,7 +40,7 @@ namespace DotNetCore.CAP.Internal
executorDescriptorList
.
AddRange
(
FindConsumersFromInterfaceTypes
(
_serviceProvider
));
executorDescriptorList
.
AddRange
(
FindConsumersFromControllerTypes
(
_serviceProvider
));
executorDescriptorList
.
AddRange
(
FindConsumersFromControllerTypes
());
return
executorDescriptorList
;
}
...
...
@@ -67,8 +68,7 @@ namespace DotNetCore.CAP.Internal
}
}
private
static
IEnumerable
<
ConsumerExecutorDescriptor
>
FindConsumersFromControllerTypes
(
IServiceProvider
provider
)
private
static
IEnumerable
<
ConsumerExecutorDescriptor
>
FindConsumersFromControllerTypes
()
{
var
executorDescriptorList
=
new
List
<
ConsumerExecutorDescriptor
>();
...
...
@@ -91,7 +91,7 @@ namespace DotNetCore.CAP.Internal
{
var
topicAttrs
=
method
.
GetCustomAttributes
<
TopicAttribute
>(
true
);
if
(
topicAttrs
.
Count
()
==
0
)
continue
;
if
(
!
topicAttrs
.
Any
()
)
continue
;
foreach
(
var
attr
in
topicAttrs
)
{
...
...
src/DotNetCore.CAP/Internal/IModelBinder.SimpleType.cs
View file @
8d564cde
...
...
@@ -73,7 +73,7 @@ namespace DotNetCore.CAP.Internal
// so we capture the inner exception.
exception
=
ExceptionDispatchInfo
.
Capture
(
exception
.
InnerException
).
SourceException
;
}
throw
exception
;
throw
;
}
}
...
...
src/DotNetCore.CAP/Internal/ModelBinderFactory.cs
View file @
8d564cde
...
...
@@ -88,7 +88,7 @@ namespace DotNetCore.CAP.Internal
public
bool
Equals
(
Key
other
)
{
return
_metadata
.
Equals
(
other
.
_metadata
)
&&
object
.
ReferenceEquals
(
_token
,
other
.
_token
);
return
_metadata
.
Equals
(
other
.
_metadata
)
&&
ReferenceEquals
(
_token
,
other
.
_token
);
}
public
override
bool
Equals
(
object
obj
)
...
...
src/DotNetCore.CAP/LoggerExtensions.cs
View file @
8d564cde
...
...
@@ -16,11 +16,11 @@ namespace DotNetCore.CAP
private
static
readonly
Action
<
ILogger
,
string
,
Exception
>
_receivedMessageRetryExecuting
;
private
static
readonly
Action
<
ILogger
,
string
,
string
,
string
,
Exception
>
_modelBinderFormattingException
;
private
static
Action
<
ILogger
,
Exception
>
_jobFailed
;
private
static
Action
<
ILogger
,
Exception
>
_jobFailedWillRetry
;
private
static
Action
<
ILogger
,
double
,
Exception
>
_jobExecuted
;
private
static
Action
<
ILogger
,
int
,
Exception
>
_jobRetrying
;
private
static
Action
<
ILogger
,
string
,
Exception
>
_exceptionOccuredWhileExecutingJob
;
private
static
readonly
Action
<
ILogger
,
Exception
>
_jobFailed
;
private
static
readonly
Action
<
ILogger
,
Exception
>
_jobFailedWillRetry
;
private
static
readonly
Action
<
ILogger
,
double
,
Exception
>
_jobExecuted
;
private
static
readonly
Action
<
ILogger
,
int
,
Exception
>
_jobRetrying
;
private
static
readonly
Action
<
ILogger
,
string
,
Exception
>
_exceptionOccuredWhileExecutingJob
;
static
LoggerExtensions
()
{
...
...
src/DotNetCore.CAP/NodeDiscovery/CAP.DiscoveryOptions.cs
View file @
8d564cde
namespace
DotNetCore.CAP
// ReSharper disable once CheckNamespace
namespace
DotNetCore.CAP
{
public
class
DiscoveryOptions
{
...
...
@@ -32,4 +33,4 @@
public
string
MatchPath
{
get
;
set
;
}
}
}
}
\ No newline at end of file
src/DotNetCore.CAP/NodeDiscovery/CAP.DiscoveryOptionsExtensions.cs
View file @
8d564cde
using
System
;
using
System.Collections.Generic
;
using
System.Text
;
namespace
DotNetCore.CAP
{
using
DotNetCore.CAP.
NodeDiscovery
;
using
NodeDiscovery
;
using
Microsoft.Extensions.DependencyInjection
;
internal
sealed
class
DiscoveryOptionsExtension
:
ICapOptionsExtension
...
...
src/DotNetCore.CAP/NodeDiscovery/IDiscoveryProviderFactory.Default.cs
View file @
8d564cde
using
System
;
using
System.Collections.Generic
;
using
System.Text
;
namespace
DotNetCore.CAP.NodeDiscovery
{
class
DiscoveryProviderFactory
:
IDiscoveryProviderFactory
internal
class
DiscoveryProviderFactory
:
IDiscoveryProviderFactory
{
public
INodeDiscoveryProvider
Create
(
DiscoveryOptions
options
)
{
...
...
src/DotNetCore.CAP/NodeDiscovery/IDiscoveryProviderFactory.cs
View file @
8d564cde
using
System
;
using
System.Collections.Generic
;
using
System.Text
;
namespace
DotNetCore.CAP.NodeDiscovery
namespace
DotNetCore.CAP.NodeDiscovery
{
interface
IDiscoveryProviderFactory
inter
nal
inter
face
IDiscoveryProviderFactory
{
INodeDiscoveryProvider
Create
(
DiscoveryOptions
options
);
}
...
...
src/DotNetCore.CAP/NodeDiscovery/INodeDiscoveryProvider.Consul.cs
View file @
8d564cde
...
...
@@ -39,10 +39,11 @@ namespace DotNetCore.CAP.NodeDiscovery
Port
=
x
.
Value
.
Port
,
Tags
=
string
.
Join
(
", "
,
x
.
Value
.
Tags
)
});
var
nodeList
=
nodes
.
ToList
();
CapCache
.
Global
.
AddOrUpdate
(
"cap.nodes.count"
,
node
s
.
Count
()
,
TimeSpan
.
FromSeconds
(
30
),
true
);
CapCache
.
Global
.
AddOrUpdate
(
"cap.nodes.count"
,
node
List
.
Count
,
TimeSpan
.
FromSeconds
(
30
),
true
);
return
node
s
.
ToList
()
;
return
node
List
;
}
catch
(
Exception
)
{
return
null
;
...
...
@@ -57,7 +58,7 @@ namespace DotNetCore.CAP.NodeDiscovery
Name
=
_options
.
NodeName
,
Address
=
_options
.
CurrentNodeHostName
,
Port
=
_options
.
CurrentNodePort
,
Tags
=
new
string
[]
{
"CAP"
,
"Client"
,
"Dashboard"
},
Tags
=
new
[]
{
"CAP"
,
"Client"
,
"Dashboard"
},
Check
=
new
AgentServiceCheck
{
DeregisterCriticalServiceAfter
=
TimeSpan
.
FromSeconds
(
30
),
...
...
src/DotNetCore.CAP/NodeDiscovery/INodeDiscoveryProvider.cs
View file @
8d564cde
using
System
;
using
System.Collections.Generic
;
using
System.Text
;
using
System.Collections.Generic
;
using
System.Threading.Tasks
;
namespace
DotNetCore.CAP.NodeDiscovery
...
...
src/DotNetCore.CAP/NodeDiscovery/IProcessingServer.Consul.cs
View file @
8d564cde
using
System
;
using
System.Collections.Generic
;
using
System.Text
;
namespace
DotNetCore.CAP.NodeDiscovery
namespace
DotNetCore.CAP.NodeDiscovery
{
class
ConsulProcessingNodeServer
:
IProcessingServer
internal
class
ConsulProcessingNodeServer
:
IProcessingServer
{
private
readonly
DiscoveryOptions
dashboardOptions
;
private
readonly
IDiscoveryProviderFactory
discoveryProviderFactory
;
private
readonly
DiscoveryOptions
_
dashboardOptions
;
private
readonly
IDiscoveryProviderFactory
_
discoveryProviderFactory
;
public
ConsulProcessingNodeServer
(
DiscoveryOptions
dashboardOptions
,
IDiscoveryProviderFactory
discoveryProviderFactory
)
{
this
.
dashboardOptions
=
dashboardOptions
;
this
.
discoveryProviderFactory
=
discoveryProviderFactory
;
_
dashboardOptions
=
dashboardOptions
;
_
discoveryProviderFactory
=
discoveryProviderFactory
;
}
public
void
Start
()
{
var
discoveryProvider
=
discoveryProviderFactory
.
Create
(
dashboardOptions
);
var
discoveryProvider
=
_discoveryProviderFactory
.
Create
(
_
dashboardOptions
);
discoveryProvider
.
RegisterNode
();
}
...
...
src/DotNetCore.CAP/NodeDiscovery/Node.cs
View file @
8d564cde
using
System
;
using
System.Collections.Generic
;
using
System.Text
;
namespace
DotNetCore.CAP.NodeDiscovery
namespace
DotNetCore.CAP.NodeDiscovery
{
public
class
Node
{
...
...
src/DotNetCore.CAP/OperateResult.cs
View file @
8d564cde
...
...
@@ -51,8 +51,11 @@ namespace DotNetCore.CAP
public
static
OperateResult
Failed
(
Exception
ex
,
params
OperateError
[]
errors
)
{
var
result
=
new
OperateResult
{
Succeeded
=
false
};
result
.
Exception
=
ex
;
var
result
=
new
OperateResult
{
Succeeded
=
false
,
Exception
=
ex
};
if
(
errors
!=
null
)
{
result
.
_errors
.
AddRange
(
errors
);
...
...
src/DotNetCore.CAP/Processor/IDispatcher.Default.cs
View file @
8d564cde
...
...
@@ -3,7 +3,6 @@ using System.Threading;
using
System.Threading.Tasks
;
using
DotNetCore.CAP.Infrastructure
;
using
Microsoft.Extensions.DependencyInjection
;
using
Microsoft.Extensions.Logging
;
using
Microsoft.Extensions.Options
;
namespace
DotNetCore.CAP.Processor
...
...
@@ -11,24 +10,15 @@ namespace DotNetCore.CAP.Processor
public
class
DefaultDispatcher
:
IDispatcher
{
private
readonly
IQueueExecutorFactory
_queueExecutorFactory
;
private
readonly
IServiceProvider
_provider
;
private
readonly
ILogger
_logger
;
private
readonly
CancellationTokenSource
_cts
;
private
readonly
TimeSpan
_pollingDelay
;
internal
static
readonly
AutoResetEvent
PulseEvent
=
new
AutoResetEvent
(
true
);
public
DefaultDispatcher
(
IServiceProvider
provider
,
IQueueExecutorFactory
queueExecutorFactory
,
IOptions
<
CapOptions
>
capOptions
,
ILogger
<
DefaultDispatcher
>
logger
)
public
DefaultDispatcher
(
IQueueExecutorFactory
queueExecutorFactory
,
IOptions
<
CapOptions
>
capOptions
)
{
_logger
=
logger
;
_queueExecutorFactory
=
queueExecutorFactory
;
_provider
=
provider
;
_cts
=
new
CancellationTokenSource
();
_pollingDelay
=
TimeSpan
.
FromSeconds
(
capOptions
.
Value
.
PollingDelay
);
}
...
...
@@ -73,7 +63,7 @@ namespace DotNetCore.CAP.Processor
private
async
Task
<
bool
>
Step
(
ProcessingContext
context
)
{
var
fetched
=
default
(
IFetchedMessage
)
;
IFetchedMessage
fetched
;
using
(
var
scopedContext
=
context
.
CreateScope
())
{
var
provider
=
scopedContext
.
Provider
;
...
...
src/DotNetCore.CAP/Processor/IProcessingServer.Cap.cs
View file @
8d564cde
...
...
@@ -9,16 +9,16 @@ using Microsoft.Extensions.Options;
namespace
DotNetCore.CAP.Processor
{
public
class
CapProcessingServer
:
IProcessingServer
,
IDisposable
public
class
CapProcessingServer
:
IProcessingServer
{
private
readonly
ILogger
_logger
;
private
readonly
ILoggerFactory
_loggerFactory
;
private
readonly
IServiceProvider
_provider
;
private
readonly
CancellationTokenSource
_cts
;
private
readonly
CapOptions
_options
;
private
readonly
IList
<
IDispatcher
>
_messageDispatchers
;
private
IProcessor
[]
_processors
;
private
IList
<
IDispatcher
>
_messageDispatchers
;
private
ProcessingContext
_context
;
private
Task
_compositeTask
;
private
bool
_disposed
;
...
...
@@ -109,7 +109,7 @@ namespace DotNetCore.CAP.Processor
private
IProcessor
[]
GetProcessors
(
int
processorCount
)
{
var
returnedProcessors
=
new
List
<
IProcessor
>();
for
(
int
i
=
0
;
i
<
processorCount
;
i
++)
for
(
var
i
=
0
;
i
<
processorCount
;
i
++)
{
var
messageProcessors
=
_provider
.
GetRequiredService
<
IDispatcher
>();
_messageDispatchers
.
Add
(
messageProcessors
);
...
...
src/DotNetCore.CAP/Processor/IProcessor.PublishQueuer.cs
View file @
8d564cde
...
...
@@ -13,7 +13,6 @@ namespace DotNetCore.CAP.Processor
public
class
PublishQueuer
:
IProcessor
{
private
readonly
ILogger
_logger
;
private
readonly
CapOptions
_options
;
private
readonly
IStateChanger
_stateChanger
;
private
readonly
IServiceProvider
_provider
;
private
readonly
TimeSpan
_pollingDelay
;
...
...
@@ -27,15 +26,16 @@ namespace DotNetCore.CAP.Processor
IServiceProvider
provider
)
{
_logger
=
logger
;
_options
=
options
.
Value
;
_stateChanger
=
stateChanger
;
_provider
=
provider
;
_pollingDelay
=
TimeSpan
.
FromSeconds
(
_options
.
PollingDelay
);
var
capOptions
=
options
.
Value
;
_pollingDelay
=
TimeSpan
.
FromSeconds
(
capOptions
.
PollingDelay
);
}
public
async
Task
ProcessAsync
(
ProcessingContext
context
)
{
_logger
.
LogDebug
(
"Publish Queuer start calling."
);
using
(
var
scope
=
_provider
.
CreateScope
())
{
CapPublishedMessage
sentMessage
;
...
...
src/DotNetCore.CAP/Processor/IProcessor.SubscribeQueuer.cs
View file @
8d564cde
...
...
@@ -12,11 +12,10 @@ namespace DotNetCore.CAP.Processor
{
public
class
SubscribeQueuer
:
IProcessor
{
private
ILogger
_logger
;
private
CapOptions
_options
;
private
IStateChanger
_stateChanger
;
private
IServiceProvider
_provider
;
private
TimeSpan
_pollingDelay
;
private
readonly
ILogger
_logger
;
private
readonly
IStateChanger
_stateChanger
;
private
readonly
IServiceProvider
_provider
;
private
readonly
TimeSpan
_pollingDelay
;
internal
static
readonly
AutoResetEvent
PulseEvent
=
new
AutoResetEvent
(
true
);
...
...
@@ -27,15 +26,16 @@ namespace DotNetCore.CAP.Processor
IServiceProvider
provider
)
{
_logger
=
logger
;
_options
=
options
.
Value
;
_stateChanger
=
stateChanger
;
_provider
=
provider
;
_pollingDelay
=
TimeSpan
.
FromSeconds
(
_options
.
PollingDelay
);
var
capOptions
=
options
.
Value
;
_pollingDelay
=
TimeSpan
.
FromSeconds
(
capOptions
.
PollingDelay
);
}
public
async
Task
ProcessAsync
(
ProcessingContext
context
)
{
_logger
.
LogDebug
(
"SubscribeQueuer start calling."
);
using
(
var
scope
=
_provider
.
CreateScope
())
{
CapReceivedMessage
message
;
...
...
src/DotNetCore.CAP/Processor/States/IState.Succeeded.cs
View file @
8d564cde
...
...
@@ -7,7 +7,7 @@ namespace DotNetCore.CAP.Processor.States
{
public
const
string
StateName
=
"Succeeded"
;
public
TimeSpan
?
ExpiresAfter
{
get
;
private
set
;
}
public
TimeSpan
?
ExpiresAfter
{
get
;
}
public
string
Name
=>
StateName
;
...
...
src/DotNetCore.CAP/StateData.cs
deleted
100644 → 0
View file @
c69d528e
using
System.Collections.Generic
;
namespace
DotNetCore.CAP
{
public
class
StateData
{
public
string
Name
{
get
;
set
;
}
public
string
Reason
{
get
;
set
;
}
public
IDictionary
<
string
,
string
>
Data
{
get
;
set
;
}
}
}
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment